OpenSSHを使いたい

 「telnetの代わりにsshを使いたい」のTipsでも紹介したように,SSHを使ういちばんのメリットは,パスワードがテキスト形式のままインターネット上に流れない点だ。また暗号化されるだけでなく,データを圧縮して送ることもできる。

 SSHをインストールする前に注意しなければならないのは,ライセンスが必要なものとオープンなものがある点だ。「telnetの代わりにsshを使いたい」で紹介したSSHは,ライセンスが必要なため広く利用するには制限が伴う。そこで,個人で利用するのであればここで紹介するOpenSSHをインストールするのがよいだろう。

 まずは,次のページからRPMをダウンロードしよう。もちろんソース(tarボールでのインストール)からのインストール方法もあるが,OpenSSHはそれほど短いスパンでアップデートされていないので,RPMでも比較的最新のものが手に入るはずだ。

 今回ダウンロードしたのは次のファイルである。ただし,Windowsからのログインと限定するのであれば,「openssh-clients-2.1.1p4-1.i386.rpm」は必要ない。このパッケージは,Linuxをクライアントとして,ほかのSSHサーバにログインする場合に必要なソフトだ。

openssl-0.9.5a-1.i386.rpm
openssl-devel-0.9.5a-1.i386.rpm
openssh-2.1.1p4-1.i386.rpm
openssh-server-2.1.1p4-1.i386.rpm
openssh-askpass-2.1.1p4-1.i386.rpm
openssh-clients-2.1.1p4-1.i386.rpm
※注:2001年1月現在のバージョン
・ダウンロード先

 まず最初に,OpenSSLをインストールしておく必要がある。あらかじめrpmの「-qa」オプションでSSLがインストールされていないか確認しておくのもよいだろう。SSLの前にOpenSSHを先にインストールしようとしても,SSLが無いというメッセージが表示されて拒否される。

1. OpenSSLのインストール

# rpm -qa |grep openssl
# rpm -Uvh openssl-*
openssl     #######################################
openssl-devel  #######################################

2. OpenSSHのインストール

 次にOpenSSHだ。特に難しいことはない。「openssh-server-*」ファイルがインストールされた直後には,自動的にrootでの暗号キーファイルの生成手順に移る。途中でパスワードを要求されるが,単純すぎる単語は避けて忘れないようにしよう。ただし,通常はネットワーク越しにrootでログインすることは無いだろう。

# rpm -Uvh openssh-
openssh-2.1.1p4-1.i386.rpm
openssh-askpass-2.1.1p4-1.i386.rpm
openssh-clients-2.1.1p4-1.i386.rpm
openssh-server-2.1.1p4-1.i386.rpm

# rpm -Uvh openssh-*
openssh     #######################################
openssh-server  #######################################
Generating RSA keys: ...........ooooooO................
........................................................
............ooooooO
Key generation complete.
Your identification has been saved in /etc/ssh/ssh_host_key.
Your public key has been saved in /etc/ssh/ssh_host_key.pub.
The key fingerprint is:
11:6f:6b:45:dc:c4:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx root@xxxxx.xxxxx.com
Generating DSA parameter and key.
Your identification has been saved in /etc/ssh/ssh_host_dsa_key.
Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.
The key fingerprint is:
76:9e:5f:58:5d:37:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx root@xxxxx.xxxxx.com

 上の出力ログから分かるように,rootの暗号キーは/etc/ssh/ディレクトリ下に作られる。念のため,ファイルのパーミッションがrootのみで参照できるようになっているか確認しておこう。

# ls -l /etc/ssh/ssh*

3. ログインするユーザー上で暗号キーを作成

 次に,一般ユーザーでの暗号キーファイルを作成しよう。後述する,Tera Termでログインしたい一般ユーザーアカウントにログインをしてから「ssh-keygen」コマンドを実行する。

# su xxxx
$ ssh-keygen
Generating RSA keys: ......................ooooooO........oo
ooooO
Key generation complete.
Enter file in which to save the key (/home/xxxx/.ssh/identity):
Created directory '/home/xxxx/.ssh'.
Enter passphrase (empty for no passphrase):xxxxxxx
Enter same passphrase again:xxxxxxx
Your identification has been saved in /home/xxxx/.ssh/identity.
Your public key has been saved in /home/xxxx/.ssh/identity.pub.
The key fingerprint is:
e7:da:32:c4:9a:8d:ca:5f:xx:xx:xx:xx:xx:xx:xx:xx xxxx@xxxxx.xxxxx.com

$ ls -l .ssh/
total 8
-rw------- 1 xxxx wheel 537 Jan 29 16:45 identity
-rw-r--r-- 1 xxxx wheel 341 Jan 29 16:45 identity.pub

4. sshdを動かしてみよう

 SSHデーモン(sshd)を起動してみよう。起動する方法には,inetd.confに記述しておいて必要な時にだけメモリに読み込む方法もあるが,ここでは常にメモリ常駐させておく方法(デーモン)形式にした。

# /etc/rc.d/init.d/sshd start
Starting sshd:                [ OK ]

5. 自動起動を好みで設定しておく

 マシンの再起動時にSSHを自動起動させたいのであれば,linuxconfなどで設定しておけばよいだろう。後述するようにtelnet起動を停止させる場合には,sshdが起動できないとログインできなくなってしまうため注意が必要だ。

6. Windows上からSSHサーバにログインする

 WindowsからSSHサーバにログインするのであれば,定評のある「Tera Term」を利用するのがいちばんだ。ダウンロード方法は,「telnetの代わりにsshを使いたい」を参考にしてほしい。ここでは,起動後の設定方法について詳細に触れていこう。

画面
TTSHを起動すると「Tera Term: New Connection」ウィンドウが表示されるが,「Cancel」を押して,あらかじめSSHの設定を行っておく

画面
次に「Setup」→「SSH....」メニューを選択する

画面
「Read/white file」ボタンを押すと「ssh_know_hosts」の文字列が表示されるので,そのままOKを押す

 ウィンドウ上側の「Compression level」は,前述したようにSSHの持ち味となっている機能のひとつだ。通信するデータをリアルタイムに圧縮してくれるので,伝送効率が上がる可能性がある。CPUパワーがあれば圧縮レベルを高めるとよいだろう。使っていくうちにいろいろと試してみるのがよい。

画面
「Setup」→「SSH Authentication....」を選択して「User Name」と「Use plan password to log in」を選択しておこう

 下側のRSAキーによるログイン「Use RSA key to log in」をチェックする方法もあるが,ここでは自分でパスワードを手入力する方法にする。

 RSAキーを利用する方法は,「TeraTermでパスワードログインを制限しRSAログインのみを許可させる」Tipsを参考にしてほしい。

画面
最後に,今までの設定を保存しておくために「Setup」→「Save Setup....」を選択しよう。ファイル名は「TERATERM.INI」のまま上書き保存しておけばよいだろう

 以上の設定を終えたら,「File」→「New Connection....」を選択してログイン先のドメイン名(IPアドレス)を入力してServiceを「SSH」にチェックすればよい。

画面
画面

 最初のログインであれば下の画面のワーニングウィンドウが表示されるが,ここでは「Add this machine and its key to the known losts list」のチェックボックスをオンにして「Continue」を押せばよい。次回からは表示されなくなる。

画面

画面
画面
このように,ウィンドウタイトルのアイコンが鍵表示になっていれば,SSHで通信されている証だ

7. 最後はtelnetサービスの停止

 SSHによるログオンが可能になったら,最後はtelnetによるログオンを停止させよう。方法は簡単だ。

# vi /etc/inetd.conf

 〜中略〜

# These are standard services.
#
#ftp  stream tcp  nowait root /usr/sbin/tcpd in.ftpd -l -a
#telnet stream tcp  nowait root /usr/sbin/tcpd in.telnetd
#ssh  stream tcp  nowait root /usr/sbin/tcpd /usr/sbin/sshd -i

 〜中略〜

 telnetの行頭に「#」を付けてコメントアウトする。次に,inetdを再起動することを忘れずに。念のため,nmapなどで確認すれば万全だ。21番ポート(telnet)が表示されなければよい。

 続いて,inetdを再起動する。再起動後は,現在つながっているtelnetをログアウトせずにSSHでログインできることが確認できてから終了させよう。万が一,設定に不備があってもtelnetのセッションさえ終了してなければすぐに修正が可能だ。

8. Nmapで開放されているポートを確認しておこう

# nmap localhost

Starting nmap V. 2.53 by fyodor@insecure.org ( www.insecure.org/nmap/ )
Interesting ports on localhost (127.0.0.1):
(The 1518 ports scanned but not shown below are in state: closed)
Port    State   Service
22/tcp   open    ssh
25/tcp   open    smtp
53/tcp   open    domain
80/tcp   open    http

Nmap run completed -- 1 IP address (1 host up) scanned in 4 seconds

 Nmapについては,開いているポートを調べるにはのTipsを参考にしてほしい