加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – ssh-agent需要每次都在我的服务器上启动

发布时间:2020-12-14 02:45:23 所属栏目:Linux 来源:网络整理
导读:我使用这个bitbucket教程提供对git repo的ssh访问: https://confluence.atlassian.com/pages/viewpage.action?pageId=270827678 但现在每次我想使用git它说我没有权限,直到我这样做: ssh-agent /bin/bashssh-add ~/.ssh/id_rsa 为什么会这样?我在本地计算
我使用这个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_AUTH_SOCK环境变量.
>使用ssh代理转发在客户端上使用代理,而不是在服务器上使用代理.在使用之前,请确保您了解其安全隐患.

从?/ .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.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读