我能够为 root 用户设置使用公钥的 ssh 登录,并尝试对非 root 用户应用相同的逻辑。我曾尝试解决此问题,但徒劳无功。我的本地计算机和远程服务器均使用 centos。
以下是我的远程服务器上 sshd_config 文件的要点,
RSAAuthentication yes
PublicKeyAuthentication yes
AuthorizedKeysFile /etc/ssh/user/authorized_keys
PasswordAuthentication no
UsePAM no
PermitRootLogin without-password
当我阅读有关 centos 中的主目录加密时,我已将我的授权密钥文件从用户主目录移至 /etc/ssh/user/authorized_keys。
我还改变了与非 root 用户相关的所有文件/目录的所有权。
不确定我的配置中缺少什么步骤,因为相同的配置对于根远程登录非常有效。
答案1
删除配置文件中的 authorized_keys 条目。重新启动 sshd。在非 root 用户主目录中创建一个 .ssh 目录。将密钥放入名为 ~/.ssh/authorized keys 的文件中。创建目录 0700 和 authorized_keys 文件 0644。对 root 用户执行相同操作。
答案2
需要明确的是,您需要将原始计算机的公钥文件(例如 ~/.ssh/id_rsa.pub)放置在目标计算机的 ~/.ssh/authorized_keys 中。
如果您复制了 ~/.ssh/id_rsa,则不会起作用。现代 sshd 还会坚持在目标计算机上将 ~/.ssh 设置为模式 700,将 ~/.ssh/authorized_keys 设置为模式 600。
另外:如果可以的话,请使用 sudo 而不是允许通过 ssh 进行 root 登录。