sshサーバを複数起動する設定

ALL
スポンサーリンク


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

参考

一台のマシンで複数のSSHサーバを立てる – ふなWiki

コメント