1.8. sshd サービスの 2 番目のインスタンスを使用したカスタムユニットファイルの作成
サービスの複数のインスタンスを設定して実行する必要がある場合は、元のサービス設定ファイルのコピーを作成し、特定のパラメーターを変更して、サービスのプライマリーインスタンスとの競合を回避できます。
手順
sshd
サービスの 2 つ目のインスタンスを作成するには、次の手順を実行します。
2 つ目のデーモンが使用する
sshd_config
ファイルのコピーを作成します。# cp /etc/ssh/sshd{,-second}_config
作成した
sshd-second_config
ファイルを編集し、2 つ目のデーモンに別のポート番号と PID ファイルを割り当てます。Port 22220 PidFile /var/run/sshd-second.pid
Port
オプションおよびPidFile
オプションの詳細は、man ページのsshd_config
(5) を参照してください。他のサービスで使用されていないポートを選択してください。PID ファイルはサービスの実行時に存在していなければいけないものではありません。存在しない場合は、サービスの起動時に自動的に生成されます。sshd
サービスのsystemd
ユニットファイルのコピーを作成します。# cp /usr/lib/systemd/system/sshd.service /etc/systemd/system/sshd-second.service
作成した
sshd-second.service
を変更します。Description
オプションを変更します。Description=OpenSSH server second instance daemon
After
オプションを指定するサービスにsshd.service
を追加し、最初のインスタンスが起動した場合に限り 2 つ目のインスタンスが起動するようにします。After=syslog.target network.target auditd.service sshd.service
-
ExecStartPre=/usr/sbin/sshd-keygen
行を削除します。鍵の生成はsshd
の最初のインスタンスに含まれます。 sshd
コマンドに-f /etc/ssh/sshd-second_config
パラメーターを追加して、代替の設定ファイルが使用されるようにします。ExecStart=/usr/sbin/sshd -D -f /etc/ssh/sshd-second_config $OPTIONS
変更後、
sshd-second.service
ユニットファイルには次の設定が含まれます。[Unit] Description=OpenSSH server second instance daemon After=syslog.target network.target auditd.service sshd.service [Service] EnvironmentFile=/etc/sysconfig/sshd ExecStart=/usr/sbin/sshd -D -f /etc/ssh/sshd-second_config $OPTIONS ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target
SELinux を使用している場合は、
sshd
の 2 番目のインスタンスのポートを SSH ポートに追加します。追加しないと、sshd
の 2 番目のインスタンスがポートにバインドされません。# semanage port -a -t ssh_port_t -p tcp 22220
sshd-second.service
を有効にして、起動時に自動的に開始するようにします。# systemctl enable sshd-second.service
-
systemctl status
コマンドを使用してsshd-second.service
が実行中かどうかを確認します。 さらに、サービスに接続して、ポートが正しく有効化されていることを確認します。
$ ssh -p 22220 user@server
sshd
の 2 番目のインスタンスへの接続を許可するようにファイアウォールを設定します。