OpenSSH

OpenSSH のインストールの仕方です。 OpenSSH には zlib と OpenSSL が必要ですから、 これらもインストールします。

用意するもの

それぞれ、[2003/04/15]現在での最新バージョンは、 です。

[2003/04/01] に openssh-3.6.1 がリリースされましたが、 3.6.1 はここに書いた 3.5p1 のインストール方法とは違います。 詳しくは付属の README などを御覧ください。 ちなみに、FreeBSD 4.1.1-RELEASE の上では openssh-3.6.1 の make に失敗しました。なぜだろう?

↑openssh のバージョンの最後に p が付くのは OpenSSH からの移植版という意味です。 3.6.1 には p が付いてないので、たぶん移植版を使わにゃいかん、 ということでしょう。 [2005/06/30]現在の最新版である openssh-4.1p1 は FreeBSD 4.7-RELEASE にインストールできました。

インストール方法は、このページの方法と同じです。

[2006/12/07] の最新版は以下の通りです。


zlib のインストール

% tar zxvf zlib-1.1.4.tar.gz
% cd zlib-1.1.4
% ./configure
% make
% su
Password:
# make install

OpenSSL のインストール

% tar zxvf openssl-0.9.6g.tar.gz
% cd openssl-0.9.6g
% ./config
% make
% make test
% su
Password:
# make install
./config であって、./configure ではないので注意してください。 make には結構時間がかかります。

OpenSSH のインストール

% tar zxvf openssh-3.5p1.tar.gz
% cd openssh-3.5p1
% ./configure --with-tcp-wrappers
% make
% su
Password:
# make install
./configure をするとき --with-tcp-wrappers オプションをつけると、 Tcpwrapper と連携して /etc/hosts.allow で sshd に関する アクセス制限をすることができます。 PAM認証を連携したい場合には --with-pam オプションを付けますが、 別に PAM 用の「何か」をインストールしてあげないと ログインに失敗するので注意です。「何か」はよくわかっていません。 また、デフォルトでは /usr/local/bin や /usr/local/lib に インストールされますが、この場所を変えたいときは --prefix=XXXXX と指定します。例えば、--prefix=/usr/local/openssh とすると、 /usr/local/openssh/bin や /usr/local/openssh/lib にインストールされます。

トラブルシューティング

openssh の configure で prefix によってインストール先を 標準の場所から変えた場合、/etc/rc.conf で sshd_enable="YES" としただけでは最新版の sshd が起ち上がらないかも知れません。 例えば、/usr/local/openssh-xxx/ 以下にインストールした場合は、 /etc/rc.conf で sshd_enable="NO" としてから、/usr/local/etc/rc.d に
#!/bin/sh
[ -x /usr/local/openssh-4.1p1/sbin/sshd ] && /usr/local/openssh-4.1p1/sbin/sshd && echo -n ' openssh'
という内容のスクリプト(sshd.sh とします)を作って、 実行権を出しておいて下さい。
# chmod u+x /usr/local/etc/rc.d/sshd.sh

トラブルシューティング

SSH2 を入れている状態で、make install すると 「sshd というユーザがいない」と言って怒られました。 では、というので無理矢理 sshd というユーザを作ると、 「ホームディレクトリの owner か mode がダメだ」 と言って怒られます。これがうまく行かないと、 sshd を起動することもできませんが、解決法はよくわからず。。。

とりあえず、うちの /etc/passwd における sshd の記述は次の通りで、 これで動いています。
sshd:*:27:27:sshd privsep:/var/empty:/sbin/nologin
2つある 27 という数字はユーザ ID とグループ ID なので自由に変更可です。

sshd の自動起ち上げ

起動時に SSH のデーモン sshd を自動的に起ち上げるには、 次のようにします。
/usr/local/etc/rc.d/sshd.sh
#!/bin/sh
[ -x /usr/local/sbin/sshd ] && /usr/local/sbin/sshd && echo -n ' sshd'
# cd /usr/local/sbin/rc.d
# chmod u+x sshd.sh
このあと、リブートもしくは
# /usr/local/etc/rc.d/sshd.sh
です。

使い方

ssh2 などでは自動的に X を転送してくれましたが、 openssh は環境変数 DISPLAY を設定しないと転送してくれません。 リモートホストに入った後、次の作業をします。
% setenv DISPLAY (ローカルホストの IP):0.0 (csh 系の場合)

もっと簡単なのは、ssh で入るときに -X オプションを付けておくことです。
% ssh -X (リモートホスト)

ローカルホスト側の設定で、-X を省くこともできます。 /etc/ssh/ssh_config というファイルの中に、次の1行を入れておきます。
/etc/ssh/ssh_config

ForwardX11 yes

UNIX パスワードではなく、パスフレーズによる認証しか認めない場合には、 /etc/ssh/sshd_config を次のように変更します。 なお、インストール先の指定によっては設定ファイルが /etc/ssh/sshd_config 以外であることがあります。
sshd -v
として、-f file の行に書いてある default の設定ファイルを調べてください。
/etc/ssh/sshd_config

RSAAuthentication yes (コメントを外す)
PubkeyAuthentication yes (コメントを外す)
PasswordAuthentication no (コメントを外して yes を no に変える)

参考ページ


FreeBSD の部屋


Last modified: Wed Apr 20 16:08:36 JST 2011