Red Hat Training
A Red Hat training course is available for RHEL 8
17.7. 使用 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
- sshd 的第一个实例包括密钥生成,因此删除 ExecStartPre=/usr/sbin/sshd-keygen 行。
为
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 实例的连接。