今日は、OpenSSH のソース(4.5p1)を展開してコンパイルします。
やはり、/etc/hosts.allow , /etc/hosts.deny と この間 passwd で調べた PAM も使いたいのでその辺を考えて、configure のオプションを指定します。
pam の 開発環境がないみたいなので入れます。
もう一度 configure を行うと、こんどはうまくいきました。早速コンパイルします。
無事にコンパイルできました。この間入れた開発環境も問題ないですね。インストール先はどうでしょう。
/usr/local にインストールします。
前も書きましたが、coLinux では、root しか見られないファイルだからと言って安心できません。別の Root FS imageですぐに root になれてしまうからです。ですから、ここで作成された、ssh の キー
/usr/local/etc/ssh_host_key ( 秘密鍵と公開鍵 )
なども厳密には安全ではありません。
coLinux で、本当に隠したいファイルは、gnupg で暗号化しておくべきでしょう。私の場合はいろいろ試すためことに利用するので問題なしとします。
/etc/host.allow , /etc/hosts.deny は既に設定されています。
INSTALL をみますと、PAM の設定が書いてあります。この間 passwd で調べたのが役立ち、この間の失敗も無駄ではなかったです。
contrib/sshd.pam.generic , contrib/redhat/sshd.pam のどちらかですが、既存のものと感じの似ている後者の方を使ってみます。
/ust/local/etc/sshd_config を修正します。
立ち上げてテストします。( 最初は、PasswordAuthentication 行は指定しません。公開鍵がうまく設定できてからです。)
TeraTerm でログインすると、サーバ側のホスト鍵fingerprint が表示されました。
46:44:3d:e0:5e:b4:4a:f3:b0:62:35:bc:7b:89:80:f7
うまくログインできました。
TeraTerm で鍵を作って、それを使ってみます。「設定」-「SSHキー設定」で作って、公開鍵を /usr/local/etc/sshd_config の AuthorizedKeysFile の設定にしたがって、coLinux 側の
~/.ssh/authorized_keys
にコピーします。コピーしたファイルのアクセス権は sshd に拒否されないために以下のようにします。
これでうまくいきました。使っている擬似ターミナルは、ttyp0 でした。/var/log/secure にも PAM のメッセージが出ています。telnetd を止めて、代わりに sshd をブート時に起動するように修正します。
これでブートすると、sshd が起動するようになりました。
この設定で、TeraTerm でいうところの「RSA/DSA鍵を使う」と「チャレンジレスポンス認証を使う」のどちらも利用可能ですが、「プレインテキストを使う」は使えません。
RSA/DSA鍵を使う場合は、TeraTerm で鍵を作ったときに使ったパスフレーズを、チャレンジレスポンス認証の場合は、Linuxのパスワードです。
ところで、xinetd ですが、
で、すべて disable = yes ですから、いまのところ不要です。これを止めて次回ブート時に起動しないようにします。
この coLinux 上でキーを作るには、ssh-keygen ですね。忘れやすいので書いておきます。ssh は、まれにしか設定しないので良く忘れるんです。
しかし、公開鍵とチャレンジレスポンス認証のどちらを使った方が良いのかはいまだにわかりません。私はチャレンジレスポンス認証が好きですが。
やはり、/etc/hosts.allow , /etc/hosts.deny と この間 passwd で調べた PAM も使いたいのでその辺を考えて、configure のオプションを指定します。
$ cd src $ tar xvzf ../openssh-4.5p1.tar.gz $ cd openssh-4.5p1 $ ./configure --with-tcp-wrappers -with-pam ............................. configure: error: PAM headers not found $
pam の 開発環境がないみたいなので入れます。
# yum install pam-devel.i386 ............................. #
もう一度 configure を行うと、こんどはうまくいきました。早速コンパイルします。
$ ./configure --with-tcp-wrappers -with-pam ............................. $ make ............................. #
無事にコンパイルできました。この間入れた開発環境も問題ないですね。インストール先はどうでしょう。
$ grep prefix Makefile prefix=/usr/local ...................... $
/usr/local にインストールします。
# make install 2>&1 |tee Install.Log #
前も書きましたが、coLinux では、root しか見られないファイルだからと言って安心できません。別の Root FS imageですぐに root になれてしまうからです。ですから、ここで作成された、ssh の キー
/usr/local/etc/ssh_host_key ( 秘密鍵と公開鍵 )
なども厳密には安全ではありません。
coLinux で、本当に隠したいファイルは、gnupg で暗号化しておくべきでしょう。私の場合はいろいろ試すためことに利用するので問題なしとします。
/etc/host.allow , /etc/hosts.deny は既に設定されています。
INSTALL をみますと、PAM の設定が書いてあります。この間 passwd で調べたのが役立ち、この間の失敗も無駄ではなかったです。
contrib/sshd.pam.generic , contrib/redhat/sshd.pam のどちらかですが、既存のものと感じの似ている後者の方を使ってみます。
# cd contrib/redhat # cp sshd.pam /etc/pam.d/sshd #
/ust/local/etc/sshd_config を修正します。
#vi /usr/local/etc/sshd_config (次のような行を追加します。) PermitRootLogin no PasswordAuthentication no UsePAM yes #
立ち上げてテストします。( 最初は、PasswordAuthentication 行は指定しません。公開鍵がうまく設定できてからです。)
# /usr/local/sbin/sshd #
TeraTerm でログインすると、サーバ側のホスト鍵fingerprint が表示されました。
46:44:3d:e0:5e:b4:4a:f3:b0:62:35:bc:7b:89:80:f7
うまくログインできました。
TeraTerm で鍵を作って、それを使ってみます。「設定」-「SSHキー設定」で作って、公開鍵を /usr/local/etc/sshd_config の AuthorizedKeysFile の設定にしたがって、coLinux 側の
~/.ssh/authorized_keys
にコピーします。コピーしたファイルのアクセス権は sshd に拒否されないために以下のようにします。
$ cd $ chmod 0600 .ssh/authorized_keys $ ls -l .ssh/authorized_keys -rw------- 1 espiya user 228 Dec 12 23:34 .ssh/authorized_keys $
これでうまくいきました。使っている擬似ターミナルは、ttyp0 でした。/var/log/secure にも PAM のメッセージが出ています。telnetd を止めて、代わりに sshd をブート時に起動するように修正します。
# # vi /etc/xinetd.d/telnet (disable行を修正します。) disable = yes # # killall -HUP xinetd # # vi /etc/rc.d/rc.local (次の行を追加します。) if [ -f /usr/local/sbin/sshd ] ; then /usr/local/sbin/sshd fi
これでブートすると、sshd が起動するようになりました。
この設定で、TeraTerm でいうところの「RSA/DSA鍵を使う」と「チャレンジレスポンス認証を使う」のどちらも利用可能ですが、「プレインテキストを使う」は使えません。
RSA/DSA鍵を使う場合は、TeraTerm で鍵を作ったときに使ったパスフレーズを、チャレンジレスポンス認証の場合は、Linuxのパスワードです。
ところで、xinetd ですが、
$ cd /etc/xinetd.d $ grep disable * chargen: disable = yes ........................... $
で、すべて disable = yes ですから、いまのところ不要です。これを止めて次回ブート時に起動しないようにします。
# /etc/init.d/xinetd stop Stopping Xinetd: [ OK ] # chkconfig --level 0123456 xinetd off #
この coLinux 上でキーを作るには、ssh-keygen ですね。忘れやすいので書いておきます。ssh は、まれにしか設定しないので良く忘れるんです。
しかし、公開鍵とチャレンジレスポンス認証のどちらを使った方が良いのかはいまだにわかりません。私はチャレンジレスポンス認証が好きですが。