我想在没有密码的情况下进行 ssh、scp、git fetch 等操作。我看到了之前的问题,并关闭了有关此问题的问题,但建议似乎是使用 ssh 密钥。但是,在设置 ssh 密钥后,我仍然被要求输入密码(不是要求我的私钥密码;而是要求我的登录密码)。我应该如何设置它以便它只使用我的私钥进行身份验证?
ssh 对authorized_keys
文件的所有权感到偏执。如果 root 以外的人可以更改文件,则它不会使用它。它检查整个目录树,因此如果有人可以执行诸如替换您的主目录或 .ssh 目录之类的操作,它将不会使用它。一直检查权限authorized_keys
到/
. 如果没有设置粘性位,这些都不应该是组或世界可写的。(我的 /home 目录的权限是drwxrwxr-t
。所有权必须是 root 或用户。authorized_keys 文件的权限不应允许按组或世界访问。
使用ssh -v
而不是测试ssh
应该会有所帮助。使用ssh-copy-id
将密钥复制到远程系统是一个好主意。