我在 cygwin 下使用 ssh-agent 时遇到了问题。疯狂的是,它本来可以工作,但有一天重启后就停止了。以下是一个例子:
sthomas@sthomas-tcg ~
$ keychain ~/.ssh/id_rsa
KeyChain 2.6.8; http://www.gentoo.org/proj/en/keychain/
Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL
* Initializing /home/sthomas/.keychain/sthomas-tcg-sh file...
* Initializing /home/sthomas/.keychain/sthomas-tcg-csh file...
* Initializing /home/sthomas/.keychain/sthomas-tcg-fish file...
* Starting ssh-agent
* Adding 1 ssh key(s)...
Enter passphrase for /home/sthomas/.ssh/id_rsa:
Identity added: /home/sthomas/.ssh/id_rsa (/home/sthomas/.ssh/id_rsa)
sthomas@sthomas-tcg ~
$ ssh-add
Could not open a connection to your authentication agent.
sthomas@sthomas-tcg ~
$ ssh stage
Enter passphrase for key '/home/sthomas/.ssh/id_rsa':
我发现这个用户和我遇到了同样的问题
不幸的是,我没有足够的声望来发表评论。我尝试按照他的指示操作,但第一步对我来说不起作用:
sthomas@sthomas-tcg ~
$ `eval ssh-agent`
-bash: SSH_AUTH_SOCK=/tmp/ssh-ejseksys5348/agent.5348;: No such file or directory
有人知道这里出了什么问题吗?文件确实存在,但每次执行时丢失的文件名都会发生变化。
sthomas@sthomas-tcg ~
$ ls /tmp/ssh-ejseksys5348/agent.5348
/tmp/ssh-ejseksys5348/agent.5348
答案1
好的,Serverfault.com 上的另一个答案有错别字。
您要运行的正确操作是:
eval `ssh-agent`
ssh-agent
输出一堆 shell 语句来设置环境变量。eval
在当前 shell 中运行它们。您可以ssh-agent
这样调用,或者运行ssh-agent
然后将其输出复制粘贴到当前 shell 中以获得相同的效果。
答案2
修复了此消息的另一个方面:我将密钥从 mint VM 导入到 cygwin。我使用了不带 nowrap 的 nano,并将我的公钥复制到 3 行而不是 1 行。我必须将其放在一行中,最后它才能与 eval 配合使用。