openssh + TTSSH インストールメモ

(2000/03/17)

sshとは

ssh とは、パスワードや通信路の暗号化を行って安全な通信を保証する、 telnet/rlogin の代替機能です。 ssh を使えばパスワードが平文でネット上を流れることもありませんし、 デフォルトでは通信路も暗号化されます。 さらに Linux/Unix にインストールした場合には scp というコマンドが作られますが、 これを安全な rcp として使用することができます。

TTSSH とは

TTSSH は、Windows 95/98/NT 上で動作する ssh クライアント機能です。 フリーの telnet クライアントである TeraTermPro のアドインとして 実装されています。 Windows 環境からインターネット経由で Linux サーバのメンテナンスを 行いたい場合には、必須のツールと言えるでしょう。

ここでは sshd をインストールして Linux 同士の接続を行い、 さらに Windows から Linux に対してセキュアな通信を確立するまでの 手順について述べます。

  1. サーバ環境

    サーバは、Plamo Linux 1.4.4 と RedHat Linux 6.1J改訂版 で試してみました。

    まず Linux サーバ側で ssh の環境をインストールします。 すでに環境が用意されている場合はスキップしてください。 なお、Linux 同士の接続を行うためには、両方のマシンにインストール しなければなりません。

  2. sshd のインストール(tarball版)

    以下のものを用意します。

    (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:
    
  3. sshd のインストール(rpm版)

    以下のものを用意します。

    ※ブツは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 などとなります。

  4. sshd の設定

    まずホストキーを生成し、所定のディレクトリにセットしておきます。

    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 に追加し、 ブート時に自動的に起動するようにしておきます。

  5. RSA 認証キーの作成

    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
    

  6. Linux 同士のログイン

    ここまでできたら、Linux 同士で接続できます。条件をまとめておきます。

    ssh でログインできる条件
    場所条件
    現在ログインしているマシン $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:~$
    
  7. TeraTermPro のインストール

    TeraTermPro は、寺西 高氏が作成した、Windows 上でもっとも定評のある telnet クライアントです。SSH は TeraTermPro の拡張 DLL として実装 されていますので、まずは TeraTermPro をインストール(*1)します。 寺西氏のサイト から tterm23.zip をダウンロードして展開し、setup.exe を起動するだけですから簡単です。

    (*1)ここでは、c:\tools\teraterm にインストールするものとします。 ご自分の環境に合わせて適当に読み替えてください。

  8. TTSSH のインストール

    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 に入れて持ち歩くなど、 別の手段を取らなければならないことは言うまでもありません。

  9. TTSSH の設定

    TTSSH.EXE を起動すると、以下のようなポップアップウィンドウが表示されます。

    (画面1)

    キャンセルボタンを押し、初期設定を行います。

    設定はこれで完了です。

  10. 接続確認

    いったん TeraTermPro を終わらせて、再び TTSSH.EXE を起動すると、 画面4が表示されますので、ログインしたいホストを入力し、Service は SSH をチェックしてください。TCP Port # が 22 に変わるはずです。

    (画面4)

    OK を押すと、初めてそのホストに接続する場合、 以下のような警告が表示されます。

    (画面5)

    Add this machine ... にチェックを入れてやれば、 次回からは聞いてこなくなります。Continue で先に進みます。 このへん、なんだか TTSSH.EXE ってバギーな感じで、なにかの拍子に TERATERM.INI(TeraTermPro の設定ファイル)を壊すことがあるようです。 ssh_known_hosts がないとかオープンできないとか書きこめないとか いろんな文句を言ってきますが、 ちゃんと書きこめているようですので安心してください(笑)。 いったん終了後、改めて起動しましょう。

    (画面6)

    パスワードを入力して OK を押すと、めでたく接続完了です。

  11. Port Forwarding

    ssh(TTSSH) に備わっている Port Forwarding という機能を使うと、 通信路の暗号化という機能を ssh 以外のプロトコルでも使えるように なります。ここでは、FTP を例にとって説明します。

    FTP のサービスを利用する場合、通常は以下のような関係になります。

    Local HostRemote Host
    FTP Client←→FTP Server

    これが Port Forwarding 機能を使うと、以下のようになります。

    Local HostRemote 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)