サーバーのメンテはWindowsマシンからTera Term Pro + TTSSHで行っているが、残念ながらSSH2には未対応である。FreeBSDは5系列になってからSSH2がデフォルトになっているので、Tera Term Pro + TTSSHでは/etc/ssh/sshd_configを書き直す必要がある。SSHはLAN内でしか使っていないのでこれでも別に不便はないがSSH2対応ターミナルソフトを導入することにした。やはり使い慣れたTera Term Proを使いたいのでネット検索したら
UTF-8対応 Tera Term Pro
http://www.vector.co.jp/soft/winnt/net/se320973.html
SSH2対応TTSSH
http://www.vector.co.jp/soft/winnt/net/se337560.html
がヒットしたので早速、導入した。
実はSSHはLAN内のみということもあり、telnet替わりにplain passwordでログインしていたが、SSH2対応のTera Term Proを導入したので暗号化してみる。
サーバーOSにはリリースされたばかりのFreeBSD 5.4-RELEASEを使用した。5.4でインストールされたSSHを調べると
%sshd -v
sshd: illegal option -- v
OpenSSH_3.8.1p1 FreeBSD-20040419, OpenSSL 0.9.7e 25 Oct 2004
となった。
クライアント用の鍵を作る必要があるのでサーバーにリモートログインしたいユーザー(hoge)になって以下のコマンドを実施する。作りたい鍵の種類によってコマンドが違うので注意する。
SSH1 RSA %ssh-keygen -t rsa1
SSH2 DSA %ssh-keygen -t dsa
SSH2 RSA %ssh-keygen -t rsa
今回はSSH2RSAで作りたいので
%ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hoge/.ssh/id_rsa):
Created directory '/home/hoge/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hoge/.ssh/id_rsa.
Your public key has been saved in /home/hoge/.ssh/id_rsa.pub.
The key fingerprint is:
f7:a8:9e:13:f6:6f:65:21:45:bc:8d:fb:0b:91:6f:1c hoge@exsample.net
となる。鍵が出来たか確認する。
%cd /home/hoge/.ssh
%ls
id_rsa id_rsa.pub
以下のコマンドでクライアント用公開鍵authorized_keysを作る。
%cp -p id_rsa.pub authorized_keys
/home/hoge/.ssh内を確認する。
%ll
total 6
-rw-r--r-- 1 hoge wheel 227 May 21 06:46 authorized_keys
-rw------- 1 hoge wheel 963 May 21 06:46 id_rsa
-rw-r--r-- 1 hoge wheel 227 May 21 06:46 id_rsa.pub
ここまで、確認できたらクライアント用秘密鍵 id_rsa をTera Term ProでリモートログインするWindowsマシンに移す。
ここまでできれば、/home/hoge/.ssh内のid_rsaとid_rsa.pubは不要なので念のため削除しておく。
Windowsマシンからログインすると上の画面となる。今回はUse RSA/DSA Key to log inの方をチェックする。Private key fileはクライアント用秘密鍵id_rsaのことである。
無事、暗号化ログインが成功したら、サーバーの/etc/ssh/sshd_configファイルを手直しする。手直しは以下の2ヶ所でそれぞれコメントアウトする。
# Authentication:
#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no