Linode 初期設定 007 ssh 接続を認証鍵で行う

リモート側(サーバー側)で最初の作業

公開鍵を保存するディレクトリを作成する。

% mkdir ~/.ssh
% chmod 0700 ~/.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 でしか使えないようだ。FreeBSDMac 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

の作業が必要になる。