1.8. 使用 sshd 服务的第二个实例创建一个自定义单元文件
如果您需要配置和运行服务的多个实例,您可以创建原始服务配置文件的副本并修改某些参数,以避免与服务的主实例冲突。
步骤
要创建 sshd
服务的第二个实例:
创建第二个守护进程将使用的
sshd_config
文件的一个副本:# cp /etc/ssh/sshd{,-second}_config
编辑上一步中创建的
sshd-second_config
文件,为第二个守护进程分配不同的端口号和 PID 文件:Port 22220 PidFile /var/run/sshd-second.pid
有关
Port
和PidFile
选项的更多信息,请参阅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
将
sshd.service
添加到After
选项中指定的服务,以便第二个实例仅在第一个实例启动后启动: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
实例的端口添加到 SSH 端口,否则拒绝将sshd
的第二个实例绑定到端口:# 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
的第二个实例的连接。