防止损坏的 ssh 配置导致服务器无法访问的巧妙方法

防止损坏的 ssh 配置导致服务器无法访问的巧妙方法

因此,有时我会更改 sshd-config 文件并破坏某些东西,因为我忘记用 进行测试sshd -t。修复它通常需要我走过去并插入机器,或者在无头 Raspi 的情况下,取出它的 SD 卡并将其修复到我的电脑上。至少可以说,这很乏味。

有哪些好的“最佳实践”方法可以防止这种情况发生?我在想,也许可以每 10 分钟运行一次备份脚本,如果 ssh-config 损坏并且 sshd-service 处于离线状态,则用备份文件替换 ssh-config;或者类似的东西。有没有更好更安全的方法来做到这一点?

答案1

一种方法是创建一个sshd在不同端口上监听的辅助端口并使用不同的配置文件。

/etc/systemd/system/ssh-backup.service首先,创建包含以下内容的单元文件

[Unit]
Description=OpenBSD Secure Shell server (Backup)
After=network.target auditd.service
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run

[Service]
EnvironmentFile=-/etc/default/ssh
ExecStartPre=/usr/sbin/sshd -t -f /etc/ssh/sshd_backup_config
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS -f /etc/ssh/sshd_backup_config
ExecReload=/usr/sbin/sshd -t -f /etc/ssh/sshd_backup_config
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartPreventExitStatus=255
Type=notify

[Install]
WantedBy=multi-user.target
Alias=sshd-backup.service

如果您打算修改/etc/default/ssh,您可能希望让两个守护进程使用不同的环境文件。

创建辅助 sshd 配置,/etc/ssh/sshd_backup_config确保指定 22 以外的端口。

对配置文件满意后,请调用

systemctl daemon-reload
systemctl enable --now ssh-backup.service

重新加载并启动服务。

让守护进程在不同的端口上运行根本不会增加任何安全性。您需要确保 ssh 守护进程至少与主守护进程一样安全,如果不是更安全的话,因为它将被忽略。

相关内容