2015/10/12
CentOS7,Ubuntu ではsshサーバを複数起動せずとも、sshd_config の設定だけで同様のことが出来ます。
次の記事を参照して下さい。
sshd_config の設定で接続元ごとに認証方法などの設定を変える
sshサーバを複数起動する設定です。
例えば、接続元によって通常のパスワード認証と公開鍵認証を使い分けるには、sshサーバの複数起動が必要です。
以降では、CentOS7 , CentOS6 , Ubuntu14.04 で sshサーバの複数起動の設定を説明します。
デフォルトに加えて、新たに起動する sshサーバの設定は以下の通りとします。
プロセス名:sshd2
使用ポート番号:2222
設定ファイル:/etc/ssh/sshd2_config
なお、sshサーバで公開鍵認証を使用するには以下を参照して下さい。
公開鍵認証による接続方法(sshコマンドの場合) パソコン鳥のブログ
公開鍵認証による接続方法(Tera Termの場合) パソコン鳥のブログ
公開鍵認証による接続方法(PuTTYの場合) パソコン鳥のブログ
CentOS7 での設定
sshd のシンボリックリンクを作成します。
ln -s /usr/sbin/sshd /usr/sbin/sshd2
ssh設定用ファイルを複数起動用に設定します。
cat /etc/ssh/sshd_config | sed -r -e "s/#PidFile \/var\/run\/sshd.pid/PidFile \/var\/run\/sshd2.pid/" -e "s/#*Port 22/Port 2222/" > /etc/ssh/sshd2_config
参考までに、ここで設定した /etc/ssh/sshd2_config と /etc/ssh/sshd_config の差分は以下となります。
# diff /etc/ssh/sshd_config /etc/ssh/sshd2_config 17c17 < #Port 22 --- > Port 2222 131c131 < #PidFile /var/run/sshd.pid --- > PidFile /var/run/sshd2.pid
その他の設定用ファイルを複数起動用に設定します。
cp /etc/sysconfig/sshd /etc/sysconfig/sshd2 cp /etc/pam.d/sshd /etc/pam.d/sshd2
自動起動の設定を行います。
cat /usr/lib/systemd/system/sshd.service | sed -r -e "s/sshd \-D $OPTIONS/sshd2 -f \/etc\/ssh\/sshd2_config -D $OPTIONS/" -e "s/\/etc\/sysconfig\/sshd/\/etc\/sysconfig\/sshd2/" > /usr/lib/systemd/system/sshd2.service
参考までに、ここで設定した /usr/lib/systemd/system/sshd2.service と /usr/lib/systemd/system/sshd.service の差分は以下となります。
# diff /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd2.service 6c6 < EnvironmentFile=/etc/sysconfig/sshd --- > EnvironmentFile=/etc/sysconfig/sshd2 8c8 < ExecStart=/usr/sbin/sshd -D $OPTIONS --- > ExecStart=/usr/sbin/sshd2 -f /etc/ssh/sshd2_config -D $OPTIONS
SELinuxを有効にしている場合、次の設定を行います。このコマンドは数秒かかります。
semanage port -a -t ssh_port_t -p tcp 2222
semanage が無い場合は、次でインストールします。
yum install policycoreutils-python
2つ目のsshdを起動します。再起動後は自動起動します。
systemctl start sshd2.service
これで、複数起動が行えます。
設定ファイルを修正する場合は、下記のファイルに対して行います。
/etc/ssh/sshd2_config /etc/sysconfig/sshd2 /etc/pam.d/sshd2
複数起動が不要になった場合は、次の手順で削除します。
systemctl stop sshd2.service
semanage port -d -t ssh_port_t -p tcp 2222 <-- SELinuxが有効の場合のみ
rm -f /usr/sbin/sshd2
rm -f /etc/pam.d/sshd2
rm -f etc/sysconfig/sshd2
rm /var/run/sshd2.pid
rm -f /etc/ssh/sshd2_config
rm -f /usr/lib/systemd/system/sshd2.service
CentOS6 での設定
sshd のシンボリックリンクを作成します。
ln -s /usr/sbin/sshd /usr/sbin/sshd2
ssh設定用ファイルを複数起動用に設定します。
cat /etc/ssh/sshd_config | sed -r -e "s/sshd/sshd2/g" -e "s/#PidFile/PidFile/" -e "s/#*Port 22/Port 2222/" > /etc/ssh/sshd2_config
参考までに、ここで設定した /etc/ssh/sshd2_config と /etc/ssh/sshd_config の差分は以下となります。
# diff /etc/ssh/sshd_config /etc/ssh/sshd2_config 1c1 < # $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $ --- > # $OpenBSD: sshd2_config,v 1.80 2008/07/02 02:24:18 djm Exp $ 3,4c3,4 < # This is the sshd server system-wide configuration file. See < # sshd_config(5) for more information. --- > # This is the sshd2 server system-wide configuration file. See > # sshd2_config(5) for more information. 6c6 < # This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin --- > # This sshd2 was compiled with PATH=/usr/local/bin:/bin:/usr/bin 8c8 < # The strategy used for options in the default sshd_config shipped with --- > # The strategy used for options in the default sshd2_config shipped with 13c13 < #Port 22 --- > Port 2222 123c123 < #PidFile /var/run/sshd.pid --- > PidFile /var/run/sshd2.pid
その他の設定用ファイルを複数起動用に設定します。
cp /etc/sysconfig/sshd /etc/sysconfig/sshd2 cp /etc/pam.d/sshd /etc/pam.d/sshd2
自動起動の設定を行います。
cat /etc/init.d/sshd | sed -r -e "s/sshd/sshd2/g" -e "s/(\. \/etc\/rc\.d\/init\.d\/functions)/\1\nOPTIONS=\"\$OPTIONS -f \/etc\/ssh\/sshd2_config\"/" > /etc/init.d/sshd2 chmod +x /etc/init.d/sshd2 chkconfig --add sshd2 chkconfig --level 2345 sshd2 on
参考までに、ここで設定した /etc/init.d/sshd2 と /etc/init.d/sshd の差分は以下となります。
# diff /etc/init.d/sshd /etc/init.d/sshd2 3c3 < # sshd Start up the OpenSSH server daemon --- > # sshd2 Start up the OpenSSH server daemon 9c9 < # processname: sshd --- > # processname: sshd2 13,14c13,14 < # config: /etc/ssh/sshd_config < # pidfile: /var/run/sshd.pid --- > # config: /etc/ssh/sshd2_config > # pidfile: /var/run/sshd2.pid 17c17 < # Provides: sshd --- > # Provides: sshd2 30a31 > OPTIONS="$OPTIONS -f /etc/ssh/sshd2_config" 33c34 < [ -f /etc/sysconfig/sshd ] && . /etc/sysconfig/sshd --- > [ -f /etc/sysconfig/sshd2 ] && . /etc/sysconfig/sshd2 36c37 < prog="sshd" --- > prog="sshd2" 41c42 < SSHD=/usr/sbin/sshd --- > SSHD=/usr/sbin/sshd2 45c46 < PID_FILE=/var/run/sshd.pid --- > PID_FILE=/var/run/sshd2.pid 130c131 < [ -f /etc/ssh/sshd_config ] || exit 6 --- > [ -f /etc/ssh/sshd2_config ] || exit 6
SELinuxを有効にしている場合、次の設定を行います。このコマンドは数秒かかります。
semanage port -a -t ssh_port_t -p tcp 2222
semanage が無い場合は、次でインストールします。
yum install policycoreutils-python
2つ目のsshdを起動します。再起動後は自動起動します。
/etc/init.d/sshd2 start
これで、複数起動が行えます。
設定ファイルを修正する場合は、下記のファイルに対して行います。
/etc/ssh/sshd2_config /etc/sysconfig/sshd2 /etc/pam.d/sshd2
複数起動が不要になった場合は、次の手順で削除します。
/etc/init.d/sshd2 stop
semanage port -d -t ssh_port_t -p tcp 2222 <-- SELinuxが有効の場合のみ
chkconfig --del sshd2
rm -f /usr/sbin/sshd2
rm /etc/sysconfig/sshd2
rm /etc/pam.d/sshd2
rm /etc/ssh/sshd2_config
rm /etc/init.d/sshd2
Ubuntu14.04 での設定
sshd のシンボリックリンクを作成します。
ln -s /usr/sbin/sshd /usr/sbin/sshd2
ssh設定用ファイルを複数起動用に設定します。
cat /etc/ssh/sshd_config | sed "s/Port 22/Port 2222/" > /etc/ssh/sshd2_config
参考までに、ここで設定した /etc/ssh/sshd2_config と /etc/ssh/sshd_config の差分は以下となります。
# diff /etc/ssh/sshd_config /etc/ssh/sshd2_config 5c5 < Port 22 --- > Port 2222
その他の設定用ファイルを複数起動用に設定します。
cp /etc/default/ssh /etc/default/ssh2 cp /etc/pam.d/sshd /etc/pam.d/sshd2
自動起動の設定を行います。
cat /etc/init/ssh.conf | sed -r -e "s/sshd/sshd2/g" -e "s/exec \/usr\/sbin\/sshd2 -D/exec \/usr\/sbin\/sshd2 -D -f \/etc\/ssh\/sshd2_config/" > /etc/init/ssh2.conf
参考までに、ここで設定した /etc/init/ssh2.conf と /etc/init/ssh.conf の差分は以下となります。
# diff /etc/init/ssh.conf /etc/init/ssh2.conf 17c17 < # 'sshd -D' leaks stderr and confuses things in conjunction with 'console log' --- > # 'sshd2 -D' leaks stderr and confuses things in conjunction with 'console log' 21,22c21,22 < test -x /usr/sbin/sshd || { stop; exit 0; } < test -e /etc/ssh/sshd_not_to_be_run && { stop; exit 0; } --- > test -x /usr/sbin/sshd2 || { stop; exit 0; } > test -e /etc/ssh/sshd2_not_to_be_run && { stop; exit 0; } 24c24 < mkdir -p -m0755 /var/run/sshd --- > mkdir -p -m0755 /var/run/sshd2 29c29 < exec /usr/sbin/sshd -D --- > exec /usr/sbin/sshd2 -D -f /etc/ssh/sshd2_config
2つ目のsshdを起動します。再起動後は自動起動します。
start ssh2
これで、複数起動が行えます。
設定ファイルを修正する場合は、下記のファイルに対して行います。
/etc/ssh/sshd2_config /etc/default/ssh2 /etc/pam.d/sshd2
複数起動が不要になった場合は、次の手順で削除します。
stop ssh2 rm /usr/sbin/sshd2 rm /etc/default/ssh2 rm /etc/pam.d/sshd2 rm /etc/ssh/sshd2_config rm /etc/init/ssh2.conf rm -r /var/run/sshd2
コメント