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的第二个实例的连接。