我想不使用密码来 ssh、scp、git fetch 等。我看到了之前的问题和关于这个问题的封闭问题,但建议似乎是使用 ssh 密钥。但是,在设置 ssh 密钥后,系统仍要求我输入密码(它不是要求我输入私钥密码;而是要求我输入登录密码)。我应该如何设置它,以便它仅使用我的私钥进行身份验证?
答案1
~/.ssh
在客户端和服务器上适当设置 (0700) 及其内容 (0600) 的权限。
答案2
ssh 对文件的所有权非常敏感authorized_keys
。如果 root 以外的人可以更改文件,则不会使用它。它会检查整个目录树,因此,如果其他人可以执行某些操作(例如替换您的主目录或 .ssh 目录),则不会使用它。检查从authorized_keys
一直到 的权限/
。如果不设置粘滞位,这些权限都不应是组或世界可写的。(我的 /home 目录的权限是drwxrwxr-t
。所有权必须是 root 或用户。authorized_keys 文件的权限不应允许组或世界访问。
用ssh -v
而不是进行测试ssh
应该会有所帮助。使用ssh-copy-id
将密钥复制到远程系统是一个好主意。