在连接gitlab过程中,已经配置了SSH KEY但一直表现为Permission denied (publickey,password).。无法连接。
1. 发现过程
发现过程: 1.使用ssh -vT git@xxx.xxx.xxx.xxx提示
debug1: debug1: Offering RSA public key: /c/Users/xxx/.ssh/id_rsa
说明公钥有被推送到服务端;
2.在服务端运行service ssh status查看ssh日志,并在客户端再次运行ssh -vT git@xxx.xxx.xxx.xxx,发现服务端日志中出现
`userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]`
发现问题,gitlab服务端ssh服务默认不允许ssh-rsa算法的密钥访问
百度发现这里的签名算法ssh-rsa,它可能代表使用SHA-1哈希算法的RSA签名。因为SHA-1是不安全的,OpenSSH禁用ssh-rsa自8.8版以来的签名算法。
**
2. 两种解决办法
** 有两种办法:
- 在/etc/ssh/sshd_config文件末尾加上以下内容,并运行systemctl restart sshd.service重启服务,注意*:此操作是更新gitlab服务端配置,不是本地客户端哈。
– PubkeyAcceptedAlgorithms +ssh–rsa
- 更新本地客户端ssh key,采用更安全的算法如:ecdsa 等 执行ssh-keygen -t ecdsa -b 521 -f ~/.ssh/id_ecdsa生成新密钥,记得更新config文件,然后将id_ecdsa.pub内容赋值到gitlab,新增ssh key,删除旧ssh key。
Host *
HostName xxx.xxx.xxx.xxx
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_ecdsa
方法1的操作是在服务端,方法2是在本地生成ssh key然后在gitlab web页面配置ssh key,别搞错了。
再次执行ssh -vT,能找到Welcome to GitLab字眼说明可以正确连接ssh了,皆大欢喜~ 结论,就是sshd服务不推荐rsa1算法,推荐采用其他算法加密的密钥更好。
评论前必须登录!
注册