OpenSSH 提示:在重新启动 SSHD 服务器之前检查语法错误
O OpenSSH(OpenBSD 安全外壳)是使用 ssh 协议通过计算机网络进行加密通信会话的默认安全外壳。通常,您使用 ssh 登录并通过远程会话更改其配置文件 /etc/ssh/sshd_conf。如果配置有错误,服务器可能无法启动(即不允许远程登录)。如果您无法访问远程控制台,这将导致灾难。但是如何找出 sshd_config 文件的语法错误?
如何检查 SSH 服务器的配置有效性和语法错误
测试 OpenSSH sshd 服务器语法错误的步骤如下:
OpenSSH 测试模式
OpenSSH 有测试模式选项。使用-t(小t)选项检查配置文件的有效性和密钥的完整性。这对于可靠地更新 sshd 很有用,因为配置选项可能会发生变化。对配置文件进行更改后,键入以下命令对配置文件运行语法检查,输入:
$ sudo /usr/sbin/sshd -t
或
# sshd -t
示例输出:
/etc/ssh/sshd_config: line 26: Bad configuration option: PermitRootLogins /etc/ssh/sshd_config: terminating, 1 bad configuration options
如果出现错误,它会显示在屏幕上。否则,它不会显示任何消息:
示例输出:
$ sudo /usr/sbin/sshd -t
$ echo $?
0
如果第 26 行出现错误,请使用 vi 文本编辑器编辑配置文件,输入:
$ sudo vi +26 /etc/ssh/sshd_config
请注意,可以在运行 OpenSSH 守护程序 (sshd) 时进行测试模式。如果没有错误,只需键入重新启动 sshd 命令:
# service sshd restart
或者
# /etc/init.d/ssh restart
或者
# systemctl ssh reload
或者只需在基于 Linux 的系统上使用 systemctl 重新加载 sshd:
$ sudo systemctl sshd reload
使用扩展测试模式验证 sshd 配置
传递-T(大写T)选项如下:
# sshd -T
# /usr/sbin/sshd -T
如何在 Linux 和 Unix 下检查 OpenSSH 配置(点击放大)
$ ssh -G {host_or_ip_here}
$ ssh -F {~/path/to/ssh_config} -G {host_or_ip_here}
$ ssh -G 192.168.2.20
$ ssh -G -F ~/.ssh/config ls.www-1
user ubuntu hostname 172.66.40.203 port 22 addkeystoagent false addressfamily any batchmode no canonicalizefallbacklocal yes canonicalizehostname false challengeresponseauthentication yes checkhostip yes compression no controlmaster auto enablesshkeysign no clearallforwardings no exitonforwardfailure no fingerprinthash SHA256 forwardx11 no forwardx11trusted yes gatewayports no gssapiauthentication no gssapikeyexchange no gssapidelegatecredentials no gssapitrustdns no gssapirenewalforcesrekey no gssapikexalgorithms gss-gex-sha1-,gss-group14-sha1- hashknownhosts no hostbasedauthentication no .... .. xauthlocation /usr/bin/xauth identityfile ~/.ssh/id_ed25519.pub canonicaldomains globalknownhostsfile /etc/ssh/ssh_known_hosts /etc/ssh/ssh_known_hosts2 userknownhostsfile ~/.ssh/known_hosts ~/.ssh/known_hosts2 forwardagent no connecttimeout none tunneldevice any:any controlpersist yes escapechar ~ ipqos lowdelay throughput rekeylimit 0 0 streamlocalbindmask 0177 syslogfacility USER
总结
本页介绍如何使用 sshd 服务器选项来测试和验证您的配置。只有在没有错误的情况下才重新启动服务器。简而言之:
- 打开 Linux 或 Unix 终端应用程序。
- 使用 ssh 命令登录远程服务器。
- 使用文本编辑器更改您的 /etc/ssh/sshd_config 服务器配置文件。
- 通过运行命令测试配置文件是否存在语法错误sshd -t。
- 当报告错误时修复你的 sshd_config。
- 最后,当配置文件中不再发现错误时,使用 service 命令或 systemctl 命令重新启动 sshd 服务。
参见
- 20 个示例:确保 Unix / Linux 配置文件没有语法错误
- 使用 man 命令或 help 命令阅读以下手册页(或者在OpenBSD Unix 主页上在线查看):
$ man sshd
- 20 个 OpenSSH 服务器最佳安全实践
- 如何在 Linux / Unix 系统上设置 SSH 密钥
- Linux / Unix 用户的 OpenSSH 配置文件示例
- 审计 Linux/Unix 上的 SSH 服务器和客户端配置
- 如何在 FreeBSD 上安装和升级 OpenSSH 服务器
- Ubuntu Linux 安装 OpenSSH 服务器
- 在 Alpine Linux 上安装 OpenSSH 服务器(包括 Docker)
- Debian Linux 安装 OpenSSH SSHD 服务器
- 配置 OpenSSH 以监听 IPv6 地址
- OpenSSH 服务器连接在几分钟不活动后断开
- 在 OpenSSH 身份验证之前显示横幅/消息
- 强制 OpenSSH(sshd)仅监听选定的多个 IP 地址
- OpenSSH 使用 ssh-keygen 命令更改密码
- 重复使用 SSH 连接以通过多路复用加速远程登录过程
- 重新启动 SSHD 服务器之前检查语法错误
- 更改 Linux 或 Unix 服务器上的 ssh 端口
- OpenSSH 拒绝或限制用户和组的访问
- Linux OpenSSH 服务器拒绝 root 用户访问/登录
- 在 Linux 上禁用 ssh 密码登录以提高安全性
- SSH ProxyCommand 示例:通过一台主机到达服务器
- OpenSSH 多路复用器可加速 OpenSSH 连接
- 在远程 Linux / UNIX 服务器中安装 / 附加 SSH 密钥 Authorized_keys
- 使用 ssh-copy-id 与监听不同端口的 OpenSSH 服务器配合使用