まずは、SSH クライアント側 (host1) で、ssh-keygen コマンドで、key pair を作成します。
host1$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/kazmuzik/.ssh/id_rsa): Enter passphrase (empty for no passphrase): ######## Enter same passphrase again: ######## Your identification has been saved in /home/kazmuzik/.ssh/id_rsa. Your public key has been saved in /home/kazmuzik/.ssh/id_rsa.pub. The key fingerprint is: bb:74:0b:5d:46:c4:da:62:95:98:53:fc:42:a8:18:d4 kazmuzik@host1 host1$ ls -l ~/.ssh -rw------- 1 kazmuzik kazmuzik 1743 2008-09-14 21:00 id_rsa -rw-r--r-- 1 kazmuzik kazmuzik 414 2008-09-14 21:00 id_rsa.pub host1$ |
上記の例では、タイプは、RSA を指定しましたが、DSA も利用できます。パスフレーズは、ローカルに、private key にアクセスするためのものです。id_rsa (ファイル名は変更可能、DSA の場合のデフォルトは、id_dsa)は、private key, id_rsa.pub は public key です。この public key を、SSH サーバー側 (host0) の、~/.ssh/authorized_keys2 に登録してやれば、リモートのパスワードなしにログインすることができます。
host0$ scp host1:./.ssh/id_rsa.pub tmpfile kazmuzik@host1's password: ######## id_rsa.pub 100% |********************************| 414 00:00 host0$ cat tmpfile >> ~/.ssh/authorized_keys2 host0$ rm tmpfile host0$ host1$ ssh host0 Enter passphrase for key '/home/kazmuzik/.ssh/id_rsa': ######## Last login: Wed Sep 11 12:00:00 2008 from host1 Sun Microsystems Inc. SunOS 5.11 snv_86 January 2008 host0$ |
しかし、これでは、リモートのパスワードは入力しなくてもいいものの、ローカルのパス
host1$ ssh-agent sh sh-3.2$ ssh-add Enter passphrase for /home/kazmuzik/.ssh/id_rsa: ###### Identity added: /home/kazmuzik/.ssh/id_rsa (/home/kazmuzik/.ssh/id_rsa) sh-3.2$ ssh host0 Last login: Wed Sep 14 22:00:00 2008 from host1 Sun Microsystems Inc. SunOS 5.11 snv_86 January 2008 host0$ |
ssh-agent から、シェルを起動して、ssh-add で private key を登録します。このときに、一度だけ、パスフレーズを入力する必要があります。以降は、こ
また、別の SSH クライアント(host2) からも、同様に host0 にアクセスする場合は、host2 の id_rsa.pub も、host0 の authorized_keys2 に追加してやれば OK です。
これを、うちの PC 間で設定して、テストしてみたところ、次のような結果になりました。
SSH client | SSH server | |||
Linux (Fedora 8) | Solaris Nevada snv_70b | OpenSolaris snv_86 | Mac OS X 10.5.4 | |
Windows + Cygwin | o (*) | o | o | o |
Linux (Fedora 8) | - | o | x | o |
Solaris Nevada snv_70b | o (*) | - | x | o |
OpenSolaris snv_86 | x | x | - | x |
Mac OS X 10.5.4 | o (*) | o | x | - |
Fedora 8 へのログインには (*) がついていますが、これはログイン自体は可能ですが、/etc/ssh/sshd_c
しかし、問題なのは、OpenSolaris (snv_86) です。唯一、Windows の Cygwin からの SSH によるログインはできたのですが、その他の組み合わせでは、サーバーもクライアントも time out になってしまいます。ssh コマンドに -v オプションを使用しながら、いろいろやってみましたが、まったく解決しません。このマ
仕方がないので、オンボードの RTL8111B (rge0) を使用するのをやめて、Intel PRO/1000 MT Server Adapter (e1000g0) に変更したところ、上記のテーブルの x が、すべて o になりました。一応、sys-unconfig を行ってから、ネットワークの設定を変更したのですが、単にハードウェア(またはドラ
Tags: computer_technology