1.8. 使用 sshd 服务的第二个实例创建一个自定义单元文件
如果您需要配置并运行服务的多个实例,您可以创建原始服务配置文件的副本并修改某些参数以避免与服务的主实例冲突。
流程
要创建 sshd 服务的第二个实例:
创建第二个守护进程将使用的
sshd_config文件的一个副本:cp /etc/ssh/sshd{,-second}_config# cp /etc/ssh/sshd{,-second}_configCopy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑上一步中创建的
sshd-second_config文件,为第二个守护进程分配不同的端口号和 PID 文件:Port 22220 PidFile /var/run/sshd-second.pid
Port 22220 PidFile /var/run/sshd-second.pidCopy to Clipboard Copied! Toggle word wrap Toggle overflow 有关
Port和PidFile选项的更多信息,请参阅sshd_config(5)手册页。请确定您选择的端口没有被其他服务使用。在运行该服务前,PID 文件不一定存在,它会在服务启动时自动生成。为
sshd服务创建systemd单元文件的一个副本:cp /usr/lib/systemd/system/sshd.service /etc/systemd/system/sshd-second.service
# cp /usr/lib/systemd/system/sshd.service /etc/systemd/system/sshd-second.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更改创建的
sshd-second.service:修改
Description选项:Description=OpenSSH server second instance daemon
Description=OpenSSH server second instance daemonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
sshd.service添加到After选项中指定的服务中,以便第二个实例仅在第一个实例启动后启动:After=syslog.target network.target auditd.service sshd.service
After=syslog.target network.target auditd.service sshd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
删除
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
ExecStart=/usr/sbin/sshd -D -f /etc/ssh/sshd-second_config $OPTIONSCopy to Clipboard Copied! Toggle word wrap Toggle overflow 修改后,
sshd-second.service单元文件包含以下设置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果使用 SELinux,请将
sshd的第二个实例的端口添加到 SSH 端口中,否则sshd的第二个实例将被拒绝绑定到端口:semanage port -a -t ssh_port_t -p tcp 22220
# semanage port -a -t ssh_port_t -p tcp 22220Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用
sshd-second.service,以便在启动时自动启动:systemctl enable sshd-second.service
# systemctl enable sshd-second.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用
systemctl status命令验证sshd-second.service是否在运行。 通过连接到该服务来验证是否正确启用了端口:
ssh -p 22220 user@server
$ ssh -p 22220 user@serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确保将防火墙配置为允许连接
sshd的第二个实例。