公司IT心血来潮对GitLab服务器进行安全升级,升级后无法启动。。。只得启用备用服务器,具体的备份机制不祥,只知道原数据都在,但文件系统是否完全一样不清楚。切换为备用服务器后使用SSH下载代码死活不成功,反复提示需要输入git@[hostname]的密码。最后问题解决了,十分狗血。。以下是我的解决思路:
- 怀疑是否是本地的公钥是否正常:尝试生成SSH公钥并上传,故障现象未发生改变;
- 怀疑服务端ssh通信异常:采用GitLab官方的SSH调试命令(`ssh -Tvvv git@[hostname]`)访问,回显日志中未有任何异常报错信息;
- 怀疑公钥未上传成功:在默认安装路径(`/var/opt/gitlab`)下的`.ssh/authorized_keys`文件中找到了自己的公钥,说明系统拥有该文件的正常读写权限(`600`),且可正常将WEB端输入写入该文件,故排除;
- 怀疑sshd配置文件中存在加密算法种类限制:有同事反馈使用`ed25519`取代`rsa`作为加密算法可正常连接,因此怀疑配置文件出了问题,首先通过命令`service ssh status`查看ssh运行状态,并同时在客户端进行代码克隆操作,果然有了收获。回显日志信息中关键行为
bash
... gitserver-sdmp-139 sshd[1368775]: userauth_pubkey: key type ssh-rsa not in PubkeyAcceotedAlgorithms [preauth]
解决方法也很简单,根据上文的提示在`/etc/ssh/sshd_config`中添加如下配置字段,并重启sshd服务即恢复正常。
bash
PubkeyAcceotedAlgorithms ssh-rsa