配置SSH公钥后GitLab git clone仍要求输入密码的解决方法
问题排查与解决步骤
1. 修正SSH配置的拼写错误
你的~/.ssh/config中Preferredauthentications存在大小写拼写错误,SSH配置关键字是大小写敏感的,正确配置应为:
Host my_host.tld Hostname my_host.tld IdentityFile /root/.ssh/gitlab_key PreferredAuthentications publickey
2. 检查SSH相关文件的权限
SSH对.ssh目录及文件权限要求严格,权限过松会直接忽略密钥文件:
- 设置
.ssh目录权限为700:chmod 700 ~/.ssh - 设置
config文件权限为600:chmod 600 ~/.ssh/config - 设置密钥文件
gitlab_key权限为600:chmod 600 /root/.ssh/gitlab_key
3. 验证Git的SSH连接细节
执行带调试信息的Git克隆命令,查看是否加载了正确的SSH配置和密钥:
GIT_SSH_COMMAND="ssh -v" git clone git@my_host.tld:username/project.git
重点看输出中是否出现Reading configuration data /root/.ssh/config以及是否尝试使用gitlab_key密钥。
4. 检查Git的自定义SSH命令配置
确认Git是否设置了覆盖默认SSH行为的参数:
git config --global core.sshCommand
如果有输出内容,说明存在自定义配置,可清空该配置恢复默认:
git config --global --unset core.sshCommand
5. 确认执行Git的用户与SSH配置所属用户一致
你的SSH配置和密钥存放在/root/.ssh目录下,如果执行Git命令的是普通用户(非root),它会读取自身家目录下的.ssh配置而非root的。这种情况下需要将密钥和配置复制到对应普通用户的~/.ssh目录中。
6. 检查SSH代理密钥加载情况(若使用代理)
如果开启了ssh-agent,确认密钥已被加载:
ssh-add -l
若未看到gitlab_key的指纹,手动添加密钥:
ssh-add /root/.ssh/gitlab_key
内容的提问来源于stack exchange,提问作者donmelchior
相关产品推荐
相关产品推荐

