AWS CodeCommit无法通过SSH克隆仓库问题求助
兄弟,从你贴的SSH调试输出开头就能看出来,你用的OpenSSH版本是6.6.1——这可是2015年的老古董了!AWS CodeCommit早就不再支持OpenSSH 6.7及更早的版本,这绝对是你克隆失败的核心原因。下面给你一步步捋排查和解决的方法:
一、先确认版本问题
你先自己核对下本地SSH版本,跑这个命令:
ssh -V
要是输出还是6.6.1或者更低,那问题就锁定在这了。旧版本的SSH在加密套件、密钥交换算法上和CodeCommit的服务器完全不兼容,连都连不上,更别说克隆仓库了。
二、升级OpenSSH到兼容版本
看你的用户目录是/home/ec2-user,应该是用的Amazon Linux 2的EC2实例吧?按下面的步骤来:
- 先把系统包更到最新:
sudo yum update -y
- 安装新版本的OpenSSH客户端和服务端:
sudo yum install openssh-clients openssh-server -y
- 要是需要的话,重启下SSH服务:
sudo service sshd restart
- 再跑一遍
ssh -V,确认版本升到6.7及以上就ok了。
要是你用的是Ubuntu/Debian系统,就换成下面的命令升级:
sudo apt update && sudo apt install --only-upgrade openssh-client openssh-server
三、再检查下你的SSH配置
从调试输出能看到,系统在读/home/ec2-user/.ssh/config里针对git-codecommit.*.amazonaws.com的配置,你得确保这配置没写错,正确的格式应该是这样:
Host git-codecommit.*.amazonaws.com User 你的IAM访问密钥ID IdentityFile ~/.ssh/你为CodeCommit生成的私钥文件.pem
这里要注意两个点:
User填的是IAM用户的访问密钥ID,不是你的IAM用户名哈IdentityFile必须指向你专门为CodeCommit生成的SSH私钥,别搞成EC2实例的密钥对了
四、先测试SSH连接再克隆
升级完版本、确认配置没问题后,先测下和CodeCommit的连接通不通,跑这个命令:
ssh git-codecommit.ap-south-1.amazonaws.com
要是看到下面这个提示,就说明连接成功了:
You have successfully authenticated over SSH. You can use Git to interact with AWS CodeCommit. Interactive shells are not supported.Connection to git-codecommit.ap-south-1.amazonaws.com closed by remote host.
这时候再执行你原来的克隆命令,肯定就能成功了。
五、还有几个小细节要检查
- 虽然你能在控制台浏览仓库,但还是要确认下你的IAM用户有没有
CodeCommitCloneRepository权限,别漏了这个操作权限 - 私钥文件的权限必须是
600,不然SSH会拒绝用它,跑这个命令改权限:
chmod 600 ~/.ssh/你的CodeCommit私钥文件.pem
内容的提问来源于stack exchange,提问作者Krishna Chebrolu

