我不明白为什么每次我 ssh 回到我的服务器时,我总是必须使用eval 'ssh-agent -s'
后面的命令启动我的 ssh 代理ssh-add <my_key.pem>
,以便从我的服务器成功 ssh 。我已将其放入我的 .bashrc 中,但显然我遗漏了一些东西,并且不想每次登录时都必须对其进行初始化。
答案1
正如 @Jakuje 所说,使用转发代理并使用本地安全计算机上的密钥更好。
keychain
但是,如果您需要按照您所说的进行操作,请使用诸如(github.com/funtoo/keychain) 或(github.com/wwalker/ssh-find-agent)之类的工具ssh-find-agent
(我写了后者,许多人仍在使用它,但我后来转而使用前者)。这两个工具都会寻找正在运行的 gpg 或 ssh 代理,并为您将您的环境连接到它们。
答案2
ForwardAgent
我相信,从您的工作站获取信息比在某些服务器上拥有一些密钥并在每次登录时通过代理重新初始化进行操作更安全和有用。
您可以简单地添加到~/.ssh/config
适当的主机(或使用-A
switch tossh
命令):
ForwardAgent yes
将本地密钥添加到您的本地代理中,您不必关心您是在本地还是远程使用它。
您也没有提到它是否是受密码保护的密钥,但我认为不是,如果您将其放入.bashrc
.更简单的方法是指定服务器上的密钥路径~/.ssh/config
(如果您想将其放在服务器上),如下所示:
IdentityFile <my_key.pem>
再次针对特定主机或全局。
答案3
如果您在 git 推送中遇到此问题,设置 git remote 以匹配 .ssh/config 中的设置应该可以解决问题。
git remote add alice git@gitolite-as-alice:whatever.git
.ssh/配置
Host gitolite-as-alice <-- matches git remote above
HostName git.company.com
User git
IdentityFile /home/whoever/.ssh/id_rsa.alice
IdentitiesOnly yes