首页 > 解决方案 > 我可以让 SSH ForwardAgent 和 ProxyJump 与 Git 一起工作吗?

问题描述

我有两台电脑;我的工作站和一台笔记本电脑用来运行我的公司 VPN。我需要通过 VPN 才能访问我的 Git 远程(BitBucket)。

我的工作站上运行了一个 SSH 代理,其中包含连接到 Git 远程所需的 SSH 密钥。我已将 SSH 配置为在连接到笔记本电脑时转发我的 SSH 代理:

Host my-laptop
    ForwardAgent yes

如果我使用 SSH 连接到我的笔记本电脑,我可以成功git pull,并ssh-agent -l确认 SSH 代理已正确转发。到目前为止,一切都很好!

这是挑战:我想直接从我的工作站使用 git。这应该可能是通过我的笔记本电脑将 SSH 配置为代理。我的 git 遥控器如下所示:

➜ git remote -v
origin  ssh://git@bitbucket.my-company.com:7999/my-team/my-project.git (fetch)
origin  ssh://git@bitbucket.my-company.com:7999/my-team/my-project.git (push)

所以我添加了这个 SSH 配置:

Host *.my-company.com
    ProxyJump my-laptop

代理跳转起作用了,因为现在我到达了 Git 遥控器!

但是,身份验证失败:

git@bitbucket.my-company.com:权限被拒绝(公钥)。
致命:无法从远程存储库中读取。

请确保您具有正确的访问权限
并且存储库存在。
退出状态 128

显然,代理命令时SSH代理转发不起作用..?

我尝试过的故障排除步骤:

那么为什么在运行 git 命令时没有使用我的本地 SSH 代理呢?

标签: gitsshssh-agent

解决方案


事实证明,在这个设置中我什至不需要 SSH 代理转发,因为 ProxyJump 设置设置了一个隧道,让我的工作站“直接”与 git 远程通信。

我收到“Permission denied (publickey)”错误的原因是我的发行版(Arch)是最新的,并且默认情况下已经禁用了对“ssh-rsa”密钥的支持。(在撰写本文时,Arch linux 附带 openssh 8.8p1)

令人沮丧的是,我用“rsa-sha2-512”生成我的密钥并不重要,这应该是安全的,我的 SSH 客户端仍然没有它。

但是,我使用 ed25519 生成了一个新密钥,这解决了我的问题。

$ ssh-keygen -t ed25519

推荐阅读