いちいちパスワードを入力するのは、めんどくさいし、パスワードが漏洩するリスクも高くなります。そんなわけで、公開鍵を利用して、パスワードを入力することなくサーバーにログインするための設定をします。
最初にローカルのPCに「.ssh」というディレクトリを作成します。というわけで、以下はローカルでの作業。
ターミナルで以下のように入力するとホームディレクトリにディレクトリが作成されます。
-
mkdir ~/.ssh
つづいて、鍵を作成します。
-
ssh-keygen -t rsa
.sshディレクトリ内にid_rsaとid_rsa.pubという2つのファイルが作成されます。これが鍵です。このうち、
「id_rsa.pub」というファイルをサーバーにある「demo」アカウントのホームディレクトリにコピーします。(以降出てくる「demo」と
「123.45.67.890」の部分はそれぞれ、自分の作成したユーザー名とサーバーのIPアドレスに置き換えて考えてください。)
-
scp ~/.ssh/id_rsa.pub demo@123.45.67.890:/home/demo/
次にアップロードしたファイルを所定の場所に移動して、権限を設定します。これ以降はサーバーでの作業。
まずはrootでサーバーにログインします。続いて、./sshディレクトリを作成し、アップロードした鍵ファイルをその中に移動します。移動の際、ファイル名を「authorized_keys」と言う名前に変更しています。以上まとめると以下のような感じ。
-
mkdir /home/demo/.ssh
-
mv /home/demo/id_rsa.pub /home/demo/.ssh/authorized_keys
つづいて、他の人に利用されないように鍵の権限を変更します。
-
chown -R demo:demo /home/demo/.ssh
-
chmod 700 /home/demo/.ssh
-
chmod 600 /home/demo/.ssh/authorized_keys
これで、ユーザー「demo」はパスワード無しでサーバーにアクセスできます。
さらにセキュリティを高めるために、SSHの設定をいじります。sshの設定をviで編集します。
-
vi /etc/ssh/sshd_config
編集ヶ所は以下の通り。
-
Port 30000
-
Protocol 2
-
PermitRootLogin no
-
PasswordAuthentication no
-
X11Forwarding no
-
UsePAM no
-
UseDNS no
-
AllowUsers demo
「Port」はsshを接続するのに使うポート番号。デフォルトは22番ですが、セキュリティの事を考えてポート番号を変更。外から発見されにくい
よう、予想されにくい番号を入れた方が良いらしいですが、気休めな気もしないでもない。パスワード認証を使用しないなら、別に22番のままでも良いような
気がしますが。
「Protocol」はプロトコルのバージョン。1と2があって、簡単に言うと1より2の方がよりセキュアということらしいです。
「PermitRootLogin」はrootでログインすることを許可するか否か。noとすることで、rootでログインできなくします。
「PasswordAuthentication」はパスワードによる認証を行うか否か。noとすることでパスワード認証を無効にします。パスワードを
使わないなら、どうやってログインするんだ?って感じですが、そこで公開鍵による認証の設定をしたわけですね。逆に言うと、鍵でしかサーバーにログインで
きないので、鍵をなくしたら大変。
「X11Forwarding」「UsePAM」「UseDNS」は、何か分かりませんが(調べるのがめんどくさくなった)、なんとなくno。名前からなんとなく予想は付きますが。
「AllowUsers」はログインを許可するユーザーです。ここではdemoを追加しています。複数設定する場合は、スペース区切りで列挙。
実際にはこんな風に一ヶ所に全ての設定はまとまっておらず、それぞれの項目はあちこちに散らばっていました。文字列検索して探し出し、設定しました。
以上を設定したら、保存してviを終了。
sshの設定を有効にするため、設定を再読込します。
-
/etc/init.d/sshd reload
無事再読込が完了したら、新しいユーザーでアクセスできるかテストしてみます。現在rootでログインしているターミナルはそのままにして、新しいターミナルを開いて、作成したユーザー(ここではdemo)でログインします。
rootでログインしている方を開きっぱにしておくのは、sshの設定が間違っていて、一般ユーザーでもrootユーザーでもログインできないという悲惨な状態を回避するため。
-
ssh -p 30000 demo@123.45.67.890
「-p 30000」とか打つのめんどくせーよ、忘れちまうよ。という人は以下でもOKらしいです。試したことないのでホントにこれでOKなのか分かりません。
-
ssh demo@123.45.67.890:30000
無事ログイン出来ると以下のように表示されます。今度はパスワードの入力をすることなくログインできます。
-
[demo@server ~]$
これで一般ユーザーでログインできるようになりました。以降はこの一般ユーザーを通して、サーバーの管理をしていきます。