You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SSH将本地git仓库克隆到另一台远程机器?

你遇到的Connection reset by peer错误通常由以下几个常见配置问题导致:

  • 本地设备未启动SSH服务,反向隧道转发的22端口无对应服务响应
  • 远程办公机器的sshd配置禁用了端口转发绑定权限,默认只允许回环地址访问转发端口
  • 执行git clone时填写的用户名是远程机器的用户名,而非本地设备的SSH登录用户名
反向SSH隧道同步代码的正确实现步骤

1. 前置配置调整

首先完成两端的基础配置:

  • 本地设备启动SSH服务:
    • Debian/Ubuntu系执行:sudo systemctl enable --now sshd
    • macOS在「系统设置-通用-共享」中开启「远程登录」
    • Windows在「设置-应用-可选功能」中安装OpenSSH服务器后启动服务
  • 远程办公机器修改SSH配置允许端口转发:
    编辑/etc/ssh/sshd_config,修改或新增配置:
    GatewayPorts clientspecified
    
    保存后执行sudo systemctl restart sshd生效,该配置比全局开GatewayPorts yes更安全。

2. 建立反向SSH隧道

本地设备执行如下命令建立隧道,命令执行后保持终端窗口不关闭:

ssh -R 0.0.0.0:43022:localhost:22 <远程机器用户名>@<远程机器公网IP/域名>

3. 远程机器拉取代码

首先测试端口连通性,远程机器执行:telnet localhost 43022,如果能正常连通再执行git克隆命令:

git clone ssh://<本地设备的SSH用户名>@localhost:43022/<本地git仓库的绝对路径>

比如本地仓库在/home/zhangsan/testgit,本地SSH用户是zhangsan,命令就是:
git clone ssh://zhangsan@localhost:43022/home/zhangsan/testgit

更易用的长期同步方案

如果需要频繁同步代码,不需要每次手动建立反向隧道,可以直接用git远程推送的方式实现:

  1. 远程办公机器创建裸仓库:
mkdir -p ~/repo/testgit.git && cd ~/repo/testgit.git
git init --bare
  1. 本地仓库添加远程推送地址:
git remote add office <远程机器用户名>@<远程机器公网IP/域名>:~/repo/testgit.git
  1. 本地开发完成后直接推送到办公机器:
git push office main

需要在办公机器使用代码时,直接从本地裸仓库克隆或拉取即可:git clone ~/repo/testgit.git

内容的提问来源于stack exchange,提问作者MyUserIsThis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:48:03