ssh とは、パスワードや通信路の暗号化を行って安全な通信を保証する、 telnet/rlogin の代替機能です。 ssh を使えばパスワードが平文でネット上を流れることもありませんし、 デフォルトでは通信路も暗号化されます。 さらに Linux/Unix にインストールした場合には scp というコマンドが作られますが、 これを安全な rcp として使用することができます。
TTSSH は、Windows 95/98/NT 上で動作する ssh クライアント機能です。 フリーの telnet クライアントである TeraTermPro のアドインとして 実装されています。 Windows 環境からインターネット経由で Linux サーバのメンテナンスを 行いたい場合には、必須のツールと言えるでしょう。
ここでは sshd をインストールして Linux 同士の接続を行い、 さらに Windows から Linux に対してセキュアな通信を確立するまでの 手順について述べます。
サーバは、Plamo Linux 1.4.4 と RedHat Linux 6.1J改訂版 で試してみました。
まず Linux サーバ側で ssh の環境をインストールします。 すでに環境が用意されている場合はスキップしてください。 なお、Linux 同士の接続を行うためには、両方のマシンにインストール しなければなりません。
以下のものを用意します。
(zlib のインストール) gimp@rhlj61:~$ tar xvzf zlib.tar.gz gimp@rhlj61:~$ cd zlib-1.1.3 gimp@rhlj61:~/zlib-1.1.3$ ./configure gimp@rhlj61:~/zlib-1.1.3$ make gimp@rhlj61:~/zlib-1.1.3$ su -c "make install" gimp@rhlj61:~/zlib-1.1.3$ Password: gimp@rhlj61:~/zlib-1.1.3$ cd (openssl のインストール) gimp@rhlj61:~$ tar xvzf openssl-0.9.5.tar.gz gimp@rhlj61:~$ cd openssl-0.9.5 gimp@rhlj61:~/openssl-0.9.5$ ./config gimp@rhlj61:~/openssl-0.9.5$ make gimp@rhlj61:~/openssl-0.9.5$ su -c "make install" gimp@rhlj61:~/openssl-0.9.5$ Password: gimp@rhlj61:~/openssl-0.9.5$ cd (openssh のインストール) gimp@rhlj61:~$ tar xvzf openssh-1.2.2.tar.gz gimp@rhlj61:~$ cd openssh-1.2.2 gimp@rhlj61:~/openssh-1.2.2$ ./configure --without-pam gimp@rhlj61:~/openssh-1.2.2$ make gimp@rhlj61:~/openssh-1.2.2$ su -c "make install" gimp@rhlj61:~/openssh-1.2.2$ Password:
以下のものを用意します。
※ブツはFTP Search などで探してみてください。
(openssl のインストール) hotta@rhlj61:~$ su - hotta@rhlj61:~$ Password: root@rhlj61:~# rpm --rebuild openssl-0.9.4-3.src.rpm root@rhlj61:~# rpm -ivh /usr/src/redhat/RPMS/i386/openssl*.rpm (openssh のインストール) root@rhlj61:~# rpm --rebuild openssh-1.2.2-1.src.rpm root@rhlj61:~# rpm -ivh /usr/src/redhat/RPMS/i386/openssh*.rpm
※なお rpm でインストールした場合は、以下の /usr/local/etc/ は /etc になるようですので適宜読み替えてください。 また /usr/local/bin は /usr/bin などとなります。
まずホストキーを生成し、所定のディレクトリにセットしておきます。
gimp@rhlj61:~$ su -c "ssh-keygen -b 1024 -f /usr/local/etc/ssh_host_key -N ''" Password: Generating RSA keys: ......................ooooooO.....ooooooO Key generation complete. Your identification has been saved in /usr/local/etc/ssh_host_key. Your public key has been saved in /usr/local/etc/ssh_host_key.pub. The key fingerprint is: 1024 f1:62:bc:63:e9:bf:01:94:bb:07:88:64:45:cf:00:89 root@rhlj61.hoge.co.jp gimp@rhlj61:~$ ls -l /usr/local/etc/(確認) total 20 (前略) -rw-r--r-- 1 root root 962 Mar 7 14:41 ssh_config -rw------- 1 root root 526 Mar 7 15:07 ssh_host_key -rw-r--r-- 1 root root 330 Mar 7 15:07 ssh_host_key.pub -rw-r--r-- 1 root root 1124 Mar 7 14:41 sshd_config
sshd を起動します。
gimp@rhlj61:~$ su -c "/usr/local/sbin/sshd"
これを /etc/rc.d/rc.local に追加し、 ブート時に自動的に起動するようにしておきます。
sshd がインストールされている任意の Linux マシンに ssh でログインしたいアカウントでログインし、ssk-keygen コマンドを実行します。 プロンプトに対して適切なパスフレーズを入力すると、 ~/.ssh/ 配下に identity と identity.pub という2つのファイルが 生成されます。
gimp@rhlj61:~$ ssh-keygen Generating RSA keys: .........................ooooooO....ooooooO Key generation complete. Enter file in which to save the key (/home/gimp/.ssh/identity):[Enter] Created directory '/home/gimp/.ssh'. Enter passphrase (empty for no passphrase):(パスフレーズ) Enter same passphrase again:(パスフレーズ) Your identification has been saved in /home/gimp/.ssh/identity. Your public key has been saved in /home/gimp/.ssh/identity.pub. The key fingerprint is: 1024 c2:c1:52:83:bc:1e:70:6f:43:fb:b5:6c:11:c2:7a:f1 gimp@rhlj61:~$ ls .ssh(確認) identity identity.pub
identity.pub が公開鍵です。 これを同じディレクトリに authorized_keys という名前でコピーしておいて置きます。 もしログインしたい Linux マシンにまだ自分のアカウントがない場合には、 そのマシンのシステム管理者にお願いして自分のアカウントをつくってもらい、 生成した identity.pub を authorized_keys という名前で $HOME/.ssh/ にコピーしてもらっておきます。
identity が秘密鍵です。これはそのままにしておきます。 これは文字通り秘密なので、 ホームページや anonymous ftp などで公開したりすると意味ないです :-)
ここまでできたら、Linux 同士で接続できます。条件をまとめておきます。
場所 | 条件 |
---|---|
現在ログインしているマシン | $HOME/.ssh/identity ファイルがあること |
リモートログインしたいマシン | $HOME/.ssh/authorized_keys ファイルがあること |
では、fuga というマシンから hoge というマシンに接続してみます。
hotta@fuga:~$ slogin hoge.local The authenticity of host 'hoge.local' can't be established. Key fingerprint is 1024 f1:62:bc:63:e9:bf:01:94:bb:07:88:64:45:cf:00:89. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'hoge.local' to the list of known hosts. Enter passphrase for RSA key 'hotta@fuga':(パスフレーズ) Last login: Wed Mar 8 11:07:04 2000 from fuga.local Linux 2.0.36. hotta@hoge:~$
TeraTermPro は、寺西 高氏が作成した、Windows 上でもっとも定評のある telnet クライアントです。SSH は TeraTermPro の拡張 DLL として実装 されていますので、まずは TeraTermPro をインストール(*1)します。 寺西氏のサイト から tterm23.zip をダウンロードして展開し、setup.exe を起動するだけですから簡単です。
(*1)ここでは、c:\tools\teraterm にインストールするものとします。 ご自分の環境に合わせて適当に読み替えてください。
TTSSH は、Robert O'Callahan 氏が開発、保守を行っている、 TeraTermPro 用の SSH 拡張 DLL です。 Robert O'Callahan 氏のサイト から ttssh151.zip をダウンロードします。 実際は日本からであれば ftp.htp.org とか ftp.win.ne.jp からダウンロードできます。 ダウンロードした ttssh151.zip を、 TeraTermPro をインストールしたのと同じディレクトリに展開します。 TeraTermPro の readme.txt が上書きされるので、 必要であればバックアップを取るか名前を変えてください。 展開が終了すると TTSSH.EXE ができますので、 デスクトップにショートカットを作成するなりしてください。
インストールが終わったら、前記の identity(秘密鍵)ファイルを c:\tools\teraterm\ に(*2)コピーしておきます。
(*2) 1 台の PC を複数の人の間で共有したりしている場合は、 秘密鍵は FD に入れて持ち歩くなど、 別の手段を取らなければならないことは言うまでもありません。
TTSSH.EXE を起動すると、以下のようなポップアップウィンドウが表示されます。
(画面1)
キャンセルボタンを押し、初期設定を行います。
このような画面が表示されます。
(画面2)
SSH Known Hosts の Read/write file: を選択し、 c:\tools\teraterm\ssh_known_hosts をセットします。 OK でこの画面を終了します。
このような画面が表示されます。
(画面3)
User name には自分のログイン名を設定します。
次に「Use RSA key to login」をチェックし、
Private key file: に c:\tools\teraterm\identity
をセットします。
設定はこれで完了です。
いったん TeraTermPro を終わらせて、再び TTSSH.EXE を起動すると、 画面4が表示されますので、ログインしたいホストを入力し、Service は SSH をチェックしてください。TCP Port # が 22 に変わるはずです。
(画面4)
OK を押すと、初めてそのホストに接続する場合、 以下のような警告が表示されます。
(画面5)
Add this machine ... にチェックを入れてやれば、
次回からは聞いてこなくなります。Continue で先に進みます。
(画面6)
パスワードを入力して OK を押すと、めでたく接続完了です。ssh(TTSSH) に備わっている Port Forwarding という機能を使うと、 通信路の暗号化という機能を ssh 以外のプロトコルでも使えるように なります。ここでは、FTP を例にとって説明します。
FTP のサービスを利用する場合、通常は以下のような関係になります。
Local Host | Remote Host | |
---|---|---|
FTP Client | ←→ | FTP Server |
これが Port Forwarding 機能を使うと、以下のようになります。
Local Host | Remote Host | |||||
---|---|---|---|---|---|---|
FTP Client | ←→ | Port Forwarder (TTSSH/sshd) | ←→ | Port Forwarder (sshd) | ←→ | FTP Server |
この図でわかるように、FTP クライアントを localhost にある TTSSH (のポートフォワーディング機能)に対して接続するように 設定してやる必要があります。 すると FTP クライアントから見て TTSSH は仮想的な FTP サーバに見えるようになります。つまり、TTSSH が一種の Proxy サーバみたいな役割をはたすことになります。
実際の設定は簡単です。まず TeraTermPro のメニューから Setup - SSH Forwarding を選びます。
(画面7)
Add ボタンを押して、
(画面8)
同様に、ftp-data というポートをフォワードするように 設定を追加します。FTP プロトコルはファイル一覧などを取得する ポートに ftp(20)、実際のファイル転送を行うポートとして ftp-data(21) を使用する(*1)からです。
(*1)ftp-data はサーバ側からクライアント側に対して 逆向きにコネクションを張ってくるというものですが、 ファイアーウォールに守られたサイトでは通常サーバ側からのコネクションを 許していませんので、ftp-data のコネクションが張れません。 この場合は、FTP クライアント側で PASV(受動)というオプション またはコマンドを発行してやるようにするとうまく行きます。 PASV でやる場合には ftp-data のフォワーディングは必要ありません。
設定はこのようになりました。
(画面9)
OK ボタンで終了します。 これで、TTSSH はポート ftp に対する接続要求を待っている状態になっています。
あとは、お手元の適当な FTP クライアントで localhost 上の FTP サーバに接続してみてください。PASV モードにすることも忘れずに。 ここでは私が使用している NextFTP の設定例を挙げます。
(画面10)
(画面11)