【发布时间】:2014-09-28 23:04:53
【问题描述】:
在$ ssh localhost,我被要求提供密码。为每次登录提供密码既乏味又烦人。
所以,我创建了带有密码的 ssh 密钥..
$ ssh-keygen -t rsa
我已将~/.ssh/id_rsa.pub的内容复制到~/.ssh/authorized_keys
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
现在,$ ssh localhost 我被要求提供密码。没有改进,但我没有提供 password,而是提供了 passphrase。
我遇到了Adding public key to ~/.ssh/authorized_keys does not log me in automatically,但它并没有解决我的问题。 正如the comment 所说,如果密钥是使用密码创建的,它将始终要求输入密码。
但是,如果创建 ssh 密钥没有密码,则任何ssh 操作都不需要密码。
这篇文章的关键是详细标志 -v 和
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
在搜索 PEM_read_PrivateKey failed 时,我发现了很多帖子,其中有几个来自 stackoverflow 本身。
但找不到合适的解决方案。
然后我遇到了Setting up passwordless, passphraseless 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?
【问题讨论】:
标签: linux bash ssh zsh ssh-agent