Git SSH非交互式问题:Putty连接GitLab闪退无法输入命令如何解决?
GitLab SSH连接异常问题解决方案
问题原因
你同事的说法是正确的,GitLab的SSH服务仅用于Git操作的权限校验,本身不支持交互式shell登录,因此你直接通过Putty发起SSH连接时,会触发Server refused to allocate pty提示,认证完成后会话会自动断开,这属于正常现象,不是你的密钥配置有问题。
具体操作步骤
1. 验证SSH配置是否正确
如果需要确认密钥配置是否生效,按以下步骤操作即可:
- 打开Putty,在会话配置页的「Host Name」栏填写
git@gitlab.com,端口保持默认22 - 依次进入
Connection > SSH设置页,勾选「Don't start a shell or command at all」 - 再进入
Connection > SSH > Auth设置页,在「Private key file for authentication」处选中你生成的.ppk格式私钥 - 点击「Open」启动会话,如果返回
Welcome to gitlab, @MyUsernameHere提示,说明你的SSH密钥配置完全正常
2. 正常执行Git拉取/推送操作
GitLab SSH不需要手动提前开启Putty会话,根据你的使用习惯选以下任意一种方式即可:
图形化操作(搭配TortoiseGit)
- 安装TortoiseGit,安装过程中选择Putty作为默认SSH客户端
- 右键点击本地要存放仓库的文件夹,选择「Git克隆」
- 在URL栏输入仓库地址
git@gitlab.com:mycompanyname-go/fuzzing.git - 勾选「加载Putty密钥」,选中你的私钥文件后点击确定,即可完成仓库拉取
- 后续的提交、拉取、推送操作,TortoiseGit会自动调用Putty完成SSH认证,无需手动操作
命令行操作(搭配Git for Windows)
- 安装Git for Windows时,可选择使用内置OpenSSH或者Putty的plink作为SSH客户端
- 打开Git Bash终端,执行验证命令
ssh git@gitlab.com,返回欢迎信息即说明配置正常 - 执行克隆命令
git clone git@gitlab.com:mycompanyname-go/fuzzing.git即可拉取仓库 - 后续的
git pull、git push等操作都会自动完成SSH认证,无需手动发起连接
小提示:如果使用Git for Windows内置的OpenSSH,需要将Putty生成的.ppk私钥通过PuttyGen导出为OpenSSH格式的私钥,放在
C:\Users\你的用户名\.ssh\id_rsa路径下,即可免输密钥路径执行Git操作。
内容的提问来源于stack exchange,提问作者user15148251
相关产品推荐
相关产品推荐

