如何通过跳板机使用Git SSH密钥访问GitLab服务
问题根因
你当前配置的本地8888端口转发映射的是GitLab的HTTP服务端口,当你发送SSH协议请求到该端口时,接收方是HTTP服务无法识别SSH协议,因此返回400错误,触发SSH密钥交换识别失败报错。
解决方法
有两种常用配置方案,可根据使用习惯选择:
方案1:新增SSH端口单独转发
- 先确认GitLab服务的SSH监听端口,默认是22,部分自定义部署场景会改为2222等其他端口,可联系GitLab管理员确认
- 新增独立的SSH端口转发命令,和原有HTTP端口转发可同时运行:
ssh -L 2222:<gitlab server ip>:<GitLab SSH端口> myname@<jump box ip> - 修改本地Git仓库的remote地址:
git remote set-url origin ssh://git@127.0.0.1:2222/path/to/project.git
方案2:配置SSH代理跳转(无需手动维护端口转发)
该方案通过SSH内置的代理跳转能力自动走跳板机访问GitLab,无需每次手动执行端口转发命令:
- 编辑本地
~/.ssh/config文件,新增如下配置:# 跳板机配置 Host jump-box HostName <jump box ip> User myname # 若跳板机使用密钥登录,可补充下一行配置 # IdentityFile ~/.ssh/你的跳板机私钥文件路径 # GitLab服务配置 Host gitlab HostName <gitlab server ip> User git ProxyJump jump-box # 若GitLab SSH不是默认22端口,补充下一行配置 # Port <GitLab SSH端口> - 修改本地Git仓库的remote地址:
git remote set-url origin ssh://git@gitlab/path/to/project.git
验证配置
配置完成后执行SSH连通性测试:
ssh git@gitlab
若返回类似Welcome to GitLab, @你的用户名!的提示,说明配置生效,可正常执行git pull/push等操作。
内容的提问来源于stack exchange,提问作者hexsix
相关产品推荐
相关产品推荐

