1. 报错信息与正确信息对比. 今天使用SSH key拉取github代码又失败了, 为什么是又😂. 上次端口错误

贴出报错信息


# 出错主机日志
ssh -vT [email protected]

OpenSSH_6.5

Server accepts key: pkalg ssh-rsa blen 279
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '/root/.ssh/git_cron':

本机正确的日志

ssh -vT [email protected]

OpenSSH_7.9p1, LibreSSL 2.7.3
debug1: Reading configuration data /Users/csx/.ssh/config
debug1: /Users/csx/.ssh/config line 4: Applying options for githu


debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /Users/csx/.ssh/git_rsa RSA SHA256:Teicz+bsGWbbB4P327A0nB5eU/u+aVxxn4RNxS3QBZc explicit
debug1: Server accepts key: /Users/csx/.ssh/git_rsa RSA SHA256:Teicz+bsGWbbB4P327A0nB5eU/u+aVxxn4RNxS3QBZc explicit


2. 分析与尝试解决.

我的SSH key生成的时候是没有使用passphrase, 每次在主机去测试的时候都让填写, 很奇怪.

提示PEM_read_PrivateKey failed问题, 怀疑是权限错误.

将.ssh设置成700, rsa设置成600, 还提示同样的错误

继续在网上搜索, 这篇 帖子

发现OpenSSH 6.5支持的格式是

-----BEGIN RSA PRIVATE KEY-----

-----END RSA PRIVATE KEY-----

我是使用本机生成的SSH KEY格式


-----BEGIN OPENSSH PRIVATE KEY-----

-----END OPENSSH PRIVATE KEY-----

7.9的版本已经使用新版本SSH KEY格式, 6.5的不支持造成的.

3. 解决办法, 是更新OpenSSH

# 查看可以更新的openSSH
yum update

手动选择openssh的软件包即可, 推荐全部更新, 因为老版本的软件使用问题太多了.