外出先からのログインするためには
SSHログイン
いままで一連の操作を行ってきたtelnetは,操作するすべての文字列が平文(テキスト)のまま伝送される。そのためパスワードも暗号化などされていない状態で流れるわけだ。悪意をもったクラッカーにパケットを監視されたりすると,いとも簡単にroot権限を奪われてしまう(もちろん後述するOpenSSHでもセキュリティホール問題があるため,バージョンアップが必須だ)。
そこで通信内容すべての暗号化を行い,ログインやすべての操作を行えるSSH(OpenSSH)を利用するのが一般的である。SSHが稼動すれば,外出先から比較的安全にPS2サーバにログインできる手段が手に入る。動作後は,後述する手順でtelnetを停止させておこう。
OpenSSHのインストールには,まず最初に暗号処理を扱うためのOpenSSLが必要になる。次のようにそれぞれのソースをダウンロードしてコンパイルを行おう。
1. まず最初にOpenSSLのインストール
公式サイト:http://www.openssl.org/
※OpenSSLはPerlの存在を調べる。そのため,あらかじめ次のようにリンクしておくのがよいだろう。
# ln -s /usr/bin/perl /usr/local/bin/perl
$ wget http://www.openssl.org/source/openssl-0.9.6a.tar.gz
$ tar zxfv openssl-0.9.6a.tar.gz
$ cd openssl-0.9.6a
$ ./configure
# make;make install
2. 次にOpenSSHのインストール
公式サイト:http://www.openssh.org/
$ wget ftp://ftp.shellhung.org/pub/OpenBSD/OpenSSH/ \ portable/openssh-2.9p2.tar.gz
$ tar zxfv openssh-2.9p2.tar.gz
$ cd openssh-2.9p2
$ ./Configure --with-md5-passwords --with-tcp-wrappers --with-pam
# make;make install
3. PAM認証ファイルを作成する
RPMからのインストールでは意識せずにPAM認証環境も整えられる。しかしソースからのコンパイルでは次のような手順で認証ファイルを作成する必要がある。
# cp contrib/sshd.pam.generic /etc/pam.d/sshd
sshd.pam.genericファイルはあらかじめ用意されているPAM認証のテンプレートファイルだ。そのままでは使えないため,次のように「unix」と書かれている個所を「pwdb」と書き換える。
# vi sshd
#%PAM-1.0
auth required /lib/security/pam_pwdb.so shadow nodelay
auth required /lib/security/pam_nologin.so
accountrequired /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_pwdb.so shadow nullok use_authtok
sessionrequired /lib/security/pam_pwdb.so
sessionrequired /lib/security/pam_limits.so
4. 自動起動のために
最後にPS2サーバの起動時に自動的にOpenSSHが起動するようにしておこう。この設定を忘れてしまうと,ログインできなくなってしまうので大切な手順だ。
次の例は,自動起動を行うためのスクリプト「/etc/rc.d/init.d/sshd」ファイルの例だ。OpenSSHを前述の設定のままインストールした場合,次のディレクトリ設定のまま使えるはずだ。「# vi /etc/rc.d/init.d/sshd」としてviエディタを起動し,次の内容をそのままペーストして保存してもよいだろう。
#!/bin/sh
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -f /usr/local/sbin/sshd ] || exit 0
# See how we were called.
case "$1" in
start)
# Start daemons.
echo -n "Starting sshd: "
daemon /usr/local/sbin/sshd
echo
touch /var/lock/subsys/sshd
;;
stop)
# Stop daemons.
echo -n "Shutting down sshd: "
killproc sshd
echo
rm -f /var/lock/subsys/sshd
;;
restart)
$0 stop
$0 start
;;
status)
status sshd
;;
*)
echo "Usage: sshd {start|stop|restart|status}"
exit 1
esac
exit 0
次のどのランレベルで自動起動させるかをシンボリックを張って設定しておく。ランレベル5と3に設定しておけばよいだろう。
# ln -s /etc/rc.d/init.d/sshd /etc/rc.d/rc5.d/S98sshd
5. デーモンを起動させてみよう
最後に次のように指定して,SSHデーモンを起動させてみよう。
# /etc/rc.d/init.d/sshd start
※次のように表示されればOKだ
$ ps ax|grep ssh
456 ? S 0:19 /usr/local/sbin/sshd
8456 ? S 0:00 /usr/local/sbin/sshd
9360 pts/1 S 0:00 grep ssh