今天,当我尝试通过 SSH 连接到我的服务器时,我收到一条权限被拒绝的消息(与 相同sftp
)。它以前运行良好,我没有更改任何服务器设置,除了我试图修改一些文件夹chown
权限。
根用户可以ssh
/sftp
没有问题。
(对于root用户来说,没有.ssh/authorized_keys
文件,只有一个.ssh/known_hosts
文件。对于普通用户来说,主文件夹没有.ssh
文件夹)。
答案1
你说你有root权限。以 root 身份 ssh 到该盒子,看看到底是什么原因造成的。检查主日志文件/var/log/messages
。
保持此命令tail -f /var/log/messages
在终端中运行,并以普通用户身份通过 ssh 连接到服务器。查看日志文件中的条目。
答案2
听起来您可能已经更改了 ~/.ssh 目录和/或 ~/.ssh/authorized_keys 文件的权限。或者可能使您的主目录组或世界可写。
~/.ssh 应为 700 (drwx------) 并且 ~/.ssh/authorized_keys 应为 600 (-rw--------)。
~/.ssh 中的私钥文件(id_rsa
、id_dsa
等)也应该是 600。公钥文件( 、 等)的权限id_rsa.pub
不太id_dsa.pub
严格 - 它们可以是世界可读的。
所有这些文件和目录都应归您的用户所有。
如果您的主目录是全局可写的,并且在 sshd_config 中设置了 StrictModes(默认为“yes”),那么 sshd 将不会信任主目录下的任何内容(包括 ~/.ssh 和其中的所有内容),因为全局可写的 home 目录意味着系统上的任何用户都可以创建或修改这些文件。
我不确定 Centos 上的 sshd 如何处理组可写的主目录,但如果您的主目录是组可写的,则同样可能适用 - 组中的任何用户都可能创建/更改了 ~/.ssh 文件。 (IIRC Debian 的 sshd 配置为允许组可写主目录,因为 Debian 的 adduser 传统上会创建一个每个用户的组只有用户是其中的成员)