linux – ssh-agent需要每次都在我的服务器上启动
我使用这个bitbucket教程提供对git repo的ssh访问:
https://confluence.atlassian.com/pages/viewpage.action?pageId=270827678 但现在每次我想使用git它说我没有权限,直到我这样做: ssh-agent /bin/bash && ssh-add ~/.ssh/id_rsa 为什么会这样?我在本地计算机上轻松完成,但远程服务器运行不佳. 更新 当我做 ssh-agent 我明白了 SSH_AUTH_SOCK=/tmp/ssh-blGr6z5dJjit/agent.14183; export SSH_AUTH_SOCK; SSH_AGENT_PID=14184; export SSH_AGENT_PID; echo Agent pid 14184; 但是我试着去做git fetch,我得到了这个: Permission denied (publickey). fatal: The remote end hung up unexpectedly 即使我添加了密钥 ssh-add ~/.ssh/bitbucket 我收到这个错误 Could not open a connection to your authentication agent. 解决方法
问题有点不清楚,所以这个答案可能真的是一个不同的问题.但由于答案可能仍然对其他人有用,我认为值得留意.
当您键入ssh-agent / bin / bash时,会启动ssh-agent的一个实例,只要该shell处于活动状态,它就会一直运行.默认情况下,ssh-agent将仅由该shell使用,并且一旦关闭该shell就会终止. 如果您只键入ssh-agent,则代理将在后台启动,即使您关闭shell也会继续运行. ssh-agent命令将在stdout上打印命令,可以输入该命令以开始使用该ssh-agent.您每次都必须键入这些命令. 您可以通过键入eval $(ssh-agent)启动后台ssh-agent并开始在当前shell中使用它.但是,您必须在某处存储SSH_AUTH_SOCK环境变量,并在再次登录时进行设置. 有了这些背景信息,我有三个建议,如何始终让代理可用. >在服务器上使用屏幕会话.当你启动屏幕时输入eval $(ssh-agent);屏幕,该代理将继续在服务器上运行,如果您稍后再次连接到该屏幕,它仍将记住要使用的代理. 从?/ .bash_profile中查找ssh-agent可以使用看起来像这样的脚本来完成 #!/bin/bash for P in /tmp/ssh-*/agent.* do if [ -O "$P" ] && [ -O "$(dirname "$P")" ] then L=$(SSH_AUTH_SOCK="$P" timeout 1s ssh-add -l > >(wc -l)) case $? in 0) echo "$L $P" ;; 1) echo "0 $P" ;; esac fi & done | sort -rn | if read N P then echo "SSH_AUTH_SOCK='$P'; export SSH_AUTH_SOCK" else ssh-agent fi 这可以从?/ .bash_profile中调用,就像这个eval $(find-agent)一样(假设脚本被命名为find-agent.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |