OpenSSHのインストール

最終更新日時:2010-03-08 00:00:00
OpenSSH

OpenSSH-5.3p1 の例です。
※OpenSSH-4.x系でも同様

準備


OpenSSH のインストールには OpenSSL と zlib が必要なので、それぞれインストールしておく必要があります。
※なぜか OpenSSL-0.98b だと core dump。

まず、sshd の使用するユーザを作成します。
これは Privilege separation(特権分離:しばしば privsep と省略される)と呼ばれる機能を使用するためで、privsep を使用しないという選択も可能ですが、使用することを強くおすすめします。
下記の例では、sshd というユーザとグループを作成します(デフォルト)。
また、sshd はデフォルトで /var/empty に、 privsep で使用するユーザで chroot しますので、/var/empty も作成します。

 # mkdir /var/empty
 # chown root:sys /var/empty
 # chmod 755 /var/empty
 # groupadd sshd
 # useradd -g sshd -c 'sshd privsep' -d /var/empty -s /bin/false sshd


インストール


準備が整ったら、OpenSSH をビルドします。
OpenSSH のソースをOpenSSH の公式サイトから取得します。
OpenSSH のコンパイル・インストール自体はお決まりのパターンです。

 % ./configure
 % make
 % su
 # make install


OpenSSL のライブラリ等が LD_LIBRARY_PATH 等で参照できない場所にある場合には、--with-ssl-dirで指定します。
また、ユーザ名と chroot するためのディレクトリをデフォルト以外のものにしている場合には、configure のオプションで明示的にそれらを指定する必要があります。
詳しくは、README.privsep を参照してください。

CentOSの場合


configure時にzlibが無いと言われる場合には、zlib, zlib-develをインストールします。
configure時にlibcryptoが無いと言われる場合には、openssl-develをインストールします。
configure時にzlibのバージョンチェックに引っかかってしまった場合には、zlibのバージョンを上げるか、--without-zlib-version-checkを指定して回避します。

起動スクリプト


contrib以下に各種起動スクリプトがあるので、これを利用します。
以下、CentOSでの設定例です。

contrib/redhat/sshd.initが起動スクリプトとして使用可能なので、これを適宜修正します。
具体的には、sshd等のパスを変更します。

 KEYGEN=/usr/local/bin/ssh-keygen
 SSHD=/usr/local/sbin/sshd
 RSA1_KEY=/usr/local/etc/ssh_host_key
 RSA_KEY=/usr/local/etc/ssh_host_rsa_key
 DSA_KEY=/usr/local/etc/ssh_host_dsa_key


修正したスクリプトを/etc/init.d/sshdとしてコピーし、initスクリプトとして追加します。

 # cp contrib/redhat/sshd.init /etc/init.d/sshd
 # chkconfig --add sshd


必要であれば、chkconfig --level 等で起動設定を変更します。
※基本はデフォルトでOKのはず

CentOS-5.xの場合


CentOS-5.xからはinitlogが非推奨となったので、init.d/sshdを実行すると、以下のようなエラーが出ます。

 Starting sshd:WARNING: initlog is deprecated and will be removed in a future release


上記は警告なので無視しても良いですが、警告を消したい場合には、以下のようにinitlogを外します。

 #initlog -c "$SSHD $OPTIONS" && success || failure ←削除
 $SSHD $OPTIONS && success || failure               ←追加


お問い合わせは 掲示板 にて。