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 ←追加
コメント