ssh-add
在运行Raspbian的RaspberryPi上工作。 我可以启动
ssh-agent
,将其输出到终端后:SSH_AUTH_SOCK=/tmp/ssh-06TcpPflMg58/agent.2806; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2807; export SSH_AGENT_PID;
echo Agent pid 2807;
如果我运行
ps aux | grep ssh
可以看到它在跑。 然后我尝试运行
ssh-add
来添加我的密钥密码,我得到以下信息:Could not open a connection to your authentication agent.
有什么想法吗?
#1 楼
您的外壳程序将评估ssh-agent
输出的外壳程序代码。改为运行此命令:eval "$(ssh-agent)"
或者如果您已经启动了ssh-agent,请将其复制粘贴到您的shell提示符下(假设您正在运行类似Bourne的shell) )。
ssh
命令需要知道如何与ssh-agent
对话,他们从SSH_AUTH_SOCK
环境变量中知道了。评论
谢谢,我不太了解它是如何工作的。非常感谢。
–丹尼尔·格罗夫(Daniel Groves)
2012-09-22 17:30
或者,您可以输入ssh-agent bash,然后在ssh-add工作之后
– RaduM
13年5月15日13:56
@Stephane,我是否正确地知道ssh-agent命令仅在eval版本实际运行命令时打印其执行的输出?
– Denys S.
13年10月7日在8:50
@DenysS。好吧,不,它会进行设置,然后告诉您的外壳如何更新其环境以能够与其联系。它本身不能做到这一点。它可以使用更新的环境来启动新的Shell(这是ssh-agent bash所做的),但是它无法更新运行外部命令(您已经在运行的Shell)的单独进程的内存。
–StéphaneChazelas
13年10月7日在9:03
@StephaneChazelas,如果我的ssh-agent是在引导时启动的,但是我仍然必须在我的shell中进行评估,是否意味着它不会针对每个shell进行自动评估,而必须由root用户进行配置?
– Denys S.
13年10月7日在9:10
#2 楼
试试这个:$ ssh-agent /bin/sh
$ ssh-add $yourkey
评论
这实际上对我有用,而其他答案都不起作用。
–约瑟夫·斯诺(Joseph Snow)
2014年11月12日18:06
如果您使用的是鱼壳,则此答案有效。 ssh代理/ usr / bin / fish。
– slackmart
16 Mar 29 '16 at 18:17
我收到一个错误:“无法打开与身份验证代理的连接。”
– IgorGanapolsky
16年8月12日在17:29
@slackmart如果在BSD中安装了fish,则其位置为/ usr / local / bin / fish(或者为/ usr / ports / shells / fish)。感谢whereis命令帮助我解决了这一问题。
– cjm
16年8月26日在4:28
太好了,@ cjm,我使用的是Slackware Linux,这是对我有用的方法。
– slackmart
16年8月27日在11:35
#3 楼
这个问题在Stackoverflow上也已经很好地涵盖了。eval `ssh-agent -s`
ssh-add
评论
您忘记了“ ...”周围的引号。没有它们,在输出上将调用split + glob运算符。
–StéphaneChazelas
2015年12月9日在9:56
#4 楼
如果将csh用作外壳程序(FreeBSD PI),则可以工作:eval `ssh-agent -c`
接下来,您只需要执行以下操作:
ssh-add ~/.ssh/id_rsa
评论
我收到一个错误:“无法打开与身份验证代理的连接。”
– IgorGanapolsky
16年8月12日在18:41
#5 楼
您还可以使用以下语法:ssh-agent sh -c 'ssh-add && echo Do some stuff here.'
评论
这对我不起作用,如果您使用ssh-agent sh -c“ ssh-add -l”,它将告诉您您没有身份。
–艾因·托夫里(Ain Tohvri)
15年7月1日在13:43
因为您必须首先添加它,例如:ssh-agent sh -c“ ssh-add && ssh-add -l”将显示您的身份。
– Kenorb
15年7月3日在17:25
#6 楼
尝试以下操作:转到
C:$Installation_Folder$\Git\cmd
start-ssh-agent
它将打开cmd命令并以正确的方式运行
ssh-agent
。 ssh-add ~/.ssh/id_rsa
应该可以工作。评论
“ bash:start-ssh-agent:找不到命令”
– IgorGanapolsky
16年8月12日在18:42
#7 楼
这很令人困惑,并且有2个可能的好的答案,具体取决于用户是尝试在Linux还是Windows(如我)上添加ssh密钥。这可能不会解决OP,但是git-bash的扩展。我同时运行Windows和Ubuntu进行开发,并且git的安装都略有不同。尝试以下操作:转到C:\ $ Installation_Folder $ \ Git \ cmd并执行:
start-ssh-agent它将打开cmd命令并以正确的方式运行ssh-agent。
..是一个很好的Windows答案,但未能指定您应该通过Windows资源管理器找到Git安装文件夹,然后运行Windows Shell,该Windows Shell将在步骤1完成时打开。
“转到C:\ $ Installation_Folder $ \ Git \ cmd“
步骤2:您只需双击
start-ssh-agent
在步骤3中,您将返回git-bash或您正在运行的任何* nix终端模拟器并运行ssh-add。如果您使用ssh公钥的默认名称,则不必添加该名称,因为ssh-add会自动使用该名称。
#8 楼
如果您希望将身份与sudo一起使用,可以通过以下几种方法进行,例如。
sudo npm install
。很长一段时间,而且还提供了root用户访问权限,因此您无需大量使用
sudo
。运行
sudo ssh-agent bash
此会要求您输入密码,然后以超级用户的权限运行
ssh-agent
,导航到用户的.ssh文件夹
cd /home/user/.ssh
从那里可以运行
ssh-add id_rsa
npm install git+ssh://git@YOUR-PROJECT-URL -g && npm link PROJECT-NAME
简短的方法,只有您的用户(除非您想大量地进行sudo)
eval "$(ssh-agent)"
ssh-add
sudo SSH_AUTH_SOCK="$SSH_AUTH_SOCK" npm install git+ssh://git@PROJECT-URL -g && sudo npm link PROJECT-NAME
评论
导出和评估工作与root一样好,只要root的登录外壳是Bourne即可。如果root的shell是csh或tcsh,请使用eval`ssh-agent -c`
–StéphaneChazelas
2015年12月8日22:50
请注意,您还可以通过执行sudo SSH_AUTH_SOCK =“ $ SSH_AUTH_SOCK” npm install来授予对ssh-agent的root访问权限。
–StéphaneChazelas
2015年12月8日在22:51
试过,两个bash都再次被bourne破坏,并且都无法正常工作。默认情况下,我的debian jessie实例上的所有用户(包括root)都设置为使用bash。
–贝尔丹杜
2015年12月8日在23:51
你尝试了什么?在以root用户身份运行的bash shell提示下,可以使用eval“ $(ssh-agent)”。您显然需要从该Shell或其后代运行ssh,以便它们继承SSH_AUTH_SOCK env var。 eval“ $(sudo ssh-agent)”; sudo ssh ...将不起作用,因为默认情况下sudo不会传递SSH_AUTH_SOCK env var。
–StéphaneChazelas
2015年12月9日,9:50
我试过评估“ $(ssh-agent)”,稍后再看是否存在某种配置错误。尽管本指南给出的当前方法允许您自由控制希望成为哪个用户,因为您已经是root用户,并且可以访问服务器上的任何用户id_rsa。因此,一旦我正常工作,请编辑我的答案。
–贝尔丹杜
2015年12月9日在19:51
评论
尝试评估$(ssh-agent)