前提
之前在本地的windows电脑上安装了一个gitea供项目组成员使用。
期间为了在windows电脑上使用scp拷贝文件,离线安装过一个openssh。
冲突
发现无法pull/clone gitea上的仓库了,提示
connection reset by ip port 22
fatal: Could not read from remote repository.
观察到gitea的管理后台是可以正常打开的,并且修改git远程仓库的地址为http也是可以正常的连接。
因此问题出现在ssh连接上。
网上解决方案
- 方法1:打开 window安全中心 - 防火墙与网络保护 - 高级设置 - 入站规则 - 新建规则 - 端口 - TCP/特定本地端口:22 - 允许连接 - 勾选规则 - 填入名称 然后保存
结果:无效 - 方法2:参考文章:https://www.jianshu.com/p/fe76f9867322
需要修改ssh配置文件以修改端口号,目测还要配置gitea的ssh端口号。
如果用这个方法,需要改动每个项目成员的电脑,不方便使用。 - 方法3:使用如下指令修改仓库地址为http
git remote set-url origin http://仓库地址.git
同样需要改动每个人的电脑,暂时做为备用方案
端口冲突
- 考虑到可能问题出现在端口冲突上
使用netsta -ano查看监听22端口的程序,观察到PID为1844和3684的两个进程同时在监听22端口
- 查找对应的进程
这个PID为3684的进程就是之前安装的Win32-OpenSSH
- 关闭进程sshd.exe,再次测试。就可以成功使用ssh格式的仓库地址,连接到gitea了。
解决方案1
- WIN+R打开运行窗口,输入services.msc
- 找到"OpenSSH Authentication Agent"和"OpenSSH SSH Server"禁用它们
- 重启电脑
解决方案2(使用离线安装的方式安装openssh-server)
- 在c:\windows\system32\下找到cmd.exe,以管理员身份运行它
- 从CMD里进入到当初下载的Win32-OpenSSH目录
- 执行
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1