我有两台电脑;我的工作站和一台笔记本电脑,用来运行我的公司VPN。我需要通过虚拟专用网才能到达我的吉特遥控器(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 pull
-它可以运行git pull
-它工作IdentityFile
和IdentitiesOnly
来强制使用正确的键,这并没有什么区别:主机*.my-company.com ProxyJump my-膝上型电脑IdentityFile ~/..ssh/hubro company.com.key IdentitiesOnly是
ForwardAgent yes
,没有什么区别:主机*.my-company.com ProxyJump my-膝上型电脑ForwardAgent yes IdentityFile ~/..ssh/hubro company.com.key IdentitiesOnly是
那么,为什么在运行git命令时不使用本地SSH代理呢?
发布于 2021-10-15 09:19:57
结果,在这个设置中,我甚至不需要SSH代理转发,因为ProxyJump设置了一个隧道,允许我的工作站“直接”与git远程通信。
我获得“拒绝权限(公开密钥)”错误的原因是,我的发行版(Arch)非常最新,默认情况下已经禁用了对"ssh-rsa“键的支持。(在撰写本文时,Arch linux附带了openssh 8.8p1)
令人沮丧的是,我用"rsa-sha2-512“生成我的密钥并不重要,这应该是安全的,我的SSH客户端仍然不会拥有它。
但是,我使用ed25519生成了一个新的密钥,这解决了我的问题。
$ ssh-keygen -t ed25519
发布于 2021-10-15 05:26:19
在这种情况下,您不需要代理转发,因为您不想将密钥转发到bitbucket.my-company.com服务器,您只想在那里进行身份验证。
在ForwardAgent
中无法转发中间代理拥有的密钥。
您需要在工作站上找到正确的密钥,但该密钥似乎只存在于您的膝上型计算机(Running git pull directly from the laptop - it works
)上。
您可以将私钥从您的笔记本电脑复制到您的workstation
中与git一起使用该密钥。
https://stackoverflow.com/questions/69583644
复制