上$ ssh localhost
,我被要求提供密码。为每次登录提供密码既乏味又烦人。
所以,我用密码创建了 ssh 密钥。
$ ssh-keygen -t rsa
我已将 to 的内容复制~/.ssh/id_rsa.pub
到~/.ssh/authorized_keys
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
现在,$ ssh localhost
我被要求提供密码。没有改进,但我没有提供密码,而是提供了密码。
我遇到了将公钥添加到 ~/.ssh/authorized_keys 不会让我自动登录,但它并没有解决我的问题。正如评论所述,如果密钥是使用密码创建的,它将始终要求输入密码。
但是,如果ssh 密钥是在没有 passphrasessh
的情况下创建的,则任何操作都不需要密码。
这篇文章的关键是冗长的标志-v
和
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
在搜索时,PEM_read_PrivateKey failed
我遇到了很多帖子,其中一些来自 stackoverflow 本身。
但找不到合适的解决方案。
然后我遇到了设置无密码、无密码的 ssh,它说明了使用 ssh 代理自动输入密码。
$ eval `ssh-agent`
$ ssh-add ~/.ssh/id_rsa
或者
$ eval `ssh-agent` && ssh-add ~/.ssh/id_rsa
但同样,它只解决了那个特定的会话。每次我开始一个新会话时,我都必须执行
$ eval `ssh-agent` && ssh-add ~/.ssh/id_rsa
我可以将它添加到我的 .bashrc 或 .zshrc 中,但是为每个会话输入密码很烦人。
有没有办法在会话中使用相同的 ssh-agent?