Linode 初期設定 007 ssh 接続を認証鍵で行う
ローカル側(手元にあるクライアント)での作業
公開鍵と秘密鍵を保存するディレクトリを作成する。そして、chmod コマンドで第三者からのアクセスを禁止する。
% mkdir ~/.ssh % chmod 0700 ~/.ssh % touch ~/.ssh/known_hosts % chmod 0600 ~/.ssh/known_hosts
一度、リモート側にログインをしておく。そして、すぐにログアウトする。
% ssh -l littlebuddha your.remotehost.com
Password:
% exit
公開鍵と秘密鍵を DSA 認証で生成する。
% ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/littlebuddha/.ssh/id_dsa): Enter passphrase (empty for no passphrase): <- パスワードを入力する Enter same passphrase again: <- パスワードを入力する Your identification has been saved in /home/littlebuddha/.ssh/id_dsa. Your public key has been saved in /home/littlebuddha/.ssh/id_dsa.pub. The key fingerprint is: 9b:6e:e0:49:c4:92:d1:4e:2d:0a:8d:2f:7f:48:27:10 yourname@localhost.yourpc % chmod 0600 ~/.ssh/id_dsa ~/.ssh/id_dsa.pub
公開鍵をリモートホストに保存する。
% cat ~/.ssh/id_dsa.pub | ssh -l littlebuddha your.remotehost.com "cat >> ~/.ssh/authorized_keys" littlebuddha@your.remotehost.com's password: %
ssh-copy-id という便利なコマンドがあるようだが、Linux でしか使えないようだ。FreeBSD や Mac OS X にはなかった。
利用方法は、
% ssh-copy-id -i ~/.ssh/id_dsa.pub littlebuddha@your.remotehost.com
となる。ssh 接続のポート番号を変更している場合は、
% ssh-copy-id -i ~/.ssh/id_dsa.pub -p 30000 littlebuddha@your.remotehost.com
-p ポート番号でポート番号を指定する
ローカルからリモート側(サーバー側)に ssh で接続をしてみる
ログインをする際に、認証鍵生成時に入力したパスワードが求められる。
% ssh -l littlebuddha your.remotehost.com Enter passphrase for key '/home/littlebuddha/.ssh/id_dsa': Linux li52-64 2.6.18.8-linode10 #2 SMP Sat Jul 19 20:24:32 EDT 2008 i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Mon Dec 22 02:32:54 2008 from localhost.yourpc %
リモート側(サーバー側)で作業結果を確認する
chmod コマンドで第三者からのアクセスを禁止する。
% ls -l ~/.ssh/authorized_keys total 4 -rw-r--r-- 1 littlebuddha wheel 623 2008-12-22 02:46 authorized_keys % chmod 0600 ~/.ssh/authorized_keys
ssh 接続時のパスワード認証と認証鍵のパスワード認証を省く
作業はローカル側で行う。
% eval `ssh-agent` Agent pid 3994 % ssh-add ~/.ssh/id_dsa Enter passphrase for /home/littlebuddha/.ssh/id_dsa: Identity added: /home/littlebuddha/.ssh/id_dsa (/home/littlebuddha/.ssh/id_dsa) %
設定が終わったら、リモート側の設定で、
% sudo vi /etc/ssh/sshd_config Password: PasswordAuthentication no
にする。
ローカルの設定が終わったら、セキュリティのために、
% eval `ssh-agent`
を行っておく。次回ログイン時には再度、
% eval `ssh-agent` % ssh-add ~/.ssh/id_dsa
の作業が必要になる。