由于我不好意思分享的原因,我在远程服务器上以 root 身份运行了此命令:
chmod a+r -R /etc
一旦我退出 SSH 会话,我就无法通过 SSH 重新登录:
$ ssh myusername@<HOST>
Connection closed by <HOST> Port 22
现在,我意识到chmod
上述操作是一个巨大的错误。但是,似乎应该只是添加对所有内容的读取权限,而不是删除任何权限,对吗?我的问题是:这究竟是如何破坏 SSH 的?
(此外,如果有人发现犯了类似的错误,我/etc
使用以下方法恢复了默认权限这个答案,但我很幸运在其他地方仍有打开的 SSH 连接来执行此操作。)
答案1
SSH 对密钥权限非常挑剔。除了用户之外,任何人都不能读取私钥,这包括 的主机密钥sshd
,当它找不到足够安全的主机密钥时,它会放弃。以下是我的系统中的示例日志,在执行 之后sudo chmod o+r /etc/ssh/*key
:
Apr 23 15:59:31 muru sshd[21516]: error: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Apr 23 15:59:31 muru sshd[21516]: error: @ WARNING: UNPROTECTED PRIVATE KEY FILE! @
Apr 23 15:59:31 muru sshd[21516]: error: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Apr 23 15:59:31 muru sshd[21516]: error: Permissions 0604 for '/etc/ssh/ssh_host_ed25519_key' are too open.
Apr 23 15:59:31 muru sshd[21516]: error: It is required that your private key files are NOT accessible by others.
Apr 23 15:59:31 muru sshd[21516]: error: This private key will be ignored.
Apr 23 15:59:31 muru sshd[21516]: sshd: no hostkeys available -- exiting.
答案2
您以递归方式更改了 下所有内容的权限/etc
。您的大多数软件都将重要文件保存在此目录下。
在许多情况下,更改软件所需文件的权限可能会导致软件无法按预期运行。
你可能破坏了不止ssh
。你可能需要重新安装操作系统,因为没有简单的方法可以撤消此命令造成的损害:此目录下每个文件的权限都不相同。