--- title: Ubuntu 10.04 で sshd を xinetd 経由で起動させる設定 author: kazu634 date: 2010-11-27 wordtwit_post_info: - 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:5393;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}' categories: - ubuntu ---
Ubuntu 10.04 だったからか、 service コマンドを用いてデーモンなどの起動を行うような変更がありました。そのため、従来の /etc/init.d/ 経由が deprecated 扱いになりました(はず)。また、OS 起動時の自動起動の設定も仕様変更があり、 /etc/init.d/ 配下ではなく、 /etc/init/ 配下の設定ファイルを参照するように変更されました。
これまでであれば、 xinetd を導入した際には、 xinetd 経由で動作させたいデーモンを自動起動しないように設定する必要がありましたが、これらの仕様変更のためにどのように設定を行えば自動起動を解除できるのかがわからなくなっていました。そこらへんを確認して、 xinetd 経由で sshd を起動させるように設定を行いました。
なお、すでにsshdが導入済みという前提で説明します。
下記のコマンドを実行します:
kazu634@srv634% sudo aptitude install xinetd
下記のコマンドを実行します。ちなみに、sshのポート番号を 10022 にしています(デフォルトは22)。
kazu634@srv634% sudo vi ssh kazu634@srv634% cat ssh service ssh { socket_type = stream protocol = tcp instances = 3 wait = no user = root server = /usr/sbin/sshd server_args = -i port = 10022 }
Ubuntu 10.04は/etc/init/ 配下の設定ファイルでOS起動時の制御を設定します。具体的には次のように設定します:
kazu634@srv634% sudo cp -p ssh.conf ssh.conf.20101126 kazu634@srv634% sudo vi ssh.conf kazu634@srv634% diff -u ssh.conf.20101126 ssh.conf /etc/init [6163] --- ssh.conf.20101126 2010-05-20 02:30:44.000000000 +0900 +++ ssh.conf 2010-11-26 23:51:08.982827977 +0900 @@ -4,7 +4,7 @@ description "OpenSSH server" -start on filesystem +# start on filesystem stop on runlevel S expect fork
xinetd を再起動し、設定ファイルを読み込み直します:
kazu634@srv634% sudo service xinetd restart
動作確認として、 ps コマンドを実行してみます:
kazu634@srv634% ps -ef | grep xinetd root 1088 1 00:15 ? 00:00:00 /usr/sbin/xinetd -pidfile /var/run/xinetd.pid -stayalive -inetd_compat -inetd_ipv6 kazu634 2102 1952 23:42 pts/ 00:00:00 grep xinetd
/usr/sbin/sshd と表示された場合、OS起動時に sshd が自動起動しています。リスタートしてみてください。
うまくsshで接続できないときは、 /var/log/auth.log を確認します:
kazu634@srv634% cat auth.log | grep sshd Nov 27 00:15:12 srv634 sshd[1090]: fatal: Missing privilege separation directory: /var/run/sshd
上記のメッセージが表示されている場合には、/var/run/sshdが存在しないのが原因です。そこで/var/run/sshdを作成します
kazu634@srv634% cd /var/run/ kazu634@srv634% sudo mkdir sshd
上記以外のメッセージの場合には、メッセージに応じた対策を取ってください。