阿里云服务器Ubuntu的git clone失败问题解决方案
一、问题
我们再使用阿里云服务器或者别的服务器,git clone失败
二、解决方案
1. 确认SSH密钥是否存在并正确配置
检查密钥文件:
ls -al ~/.ssh
确认存在 id_rsa(私钥)和 id_rsa.pub(公钥)文件。
若无密钥,生成新的SSH密钥:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" # 替换为GitHub注册邮箱
按提示回车完成生成(默认路径为 ~/.ssh/id_rsa)。
添加公钥到GitHub:
复制公钥内容:
cat ~/.ssh/id_rsa.pub
这里我们要科学上网访问github,然后把生成的ssh密钥设置好,登录GitHub → Settings → SSH and GPG keys → 粘贴公钥并保存。
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCn+7YtAZsB0ywASnejLqxuv7EAsV1WNWK3NI0j8Icaoy+RsiStbXQVlPdChOeKjQ4b25imAVWpQ+fZFTIGnqJpo33MNwHh+2cPQHjJ089skIV8t25id6tDxrtKX7vNvguJASFr++NFPZPOr4QsxL0fUewkKfH+7/zHbXWX/Mm5kUbAfmH8walJGbkP3lZ6TmZ61ypuE4ypYk8JNqxZqGJ+VWz4GoFA0Gl+UO35vFj6uP1l+ZHboIedewuiVNiBf1B6DnAQd9V/VDCGLo2OGGcAZpEVpmd8KG1nyu5vceO484gKNM4BL8DyeJu0wXtLkpt2kHUw6SDCdeJ9fUjUTjGZ87awwCsZejJ8xqmWf9+VOhTjzJBkbfAHlK6ECeGHBeB5jv45dJthAvILVWvGoxgA1Iav8iX4tMMlPITDi/GglY/OHgHeeYn+WTGpDdbroB+lPCH4QD5qb2JOAZ5Vms7j25F5Gf7izSfbijY201zICpa3CPFuqz/oCPVDWBbx8KMGnnRPMXqK5pl5GRTTCDRyrP3F67vxymys0IEnWciucnE+5V9j92AfVSDwVSebpYaM/D8JfLcBZzXB1QuyYx3LRBCB3hCKCPYgBfm2Bb8bvSTbnp9eCm2BX/sVww/8mjbh5UZZ60VTqvF+zwV+BLH0uIIYquf5vdE5LuuP5HgP6Q==your_email@example.com
需要手机验证一下,手机也要科学上网
2. 启动SSH代理并加载私钥
启动代理:
eval "$(ssh-agent -s)" # 输出类似 "Agent pid 12345"
添加私钥到代理:
ssh-add ~/.ssh/id_rsa
若提示 Could not open a connection to your authentication agent,先运行 eval ssh-agent -s。
3. 修改SSH配置文件以使用443端口
编辑 ~/.ssh/config 文件(若不存在则新建):
vim ~/.ssh/config
Host github.comHostName ssh.github.com # 关键:指定备用域名User gitPort 443 # 强制使用443端口IdentityFile ~/.ssh/id_rsa # 指定私钥路径PreferredAuthentications publickey
保存后运行:
chmod 600 ~/.ssh/config # 确保文件权限正确
4. 测试连接并调试
测试SSH连通性:
ssh -Tv git@github.com # -v 显示详细日志
成功时会显示 Hi username! You've successfully authenticated...。
关键调试点:
日志中应显示 Offering public key: ~/.ssh/id_rsa,确认密钥被正确加载。
若出现 no mutual signature algorithm,在 ~/.ssh/config 中添加:
HostKeyAlgorithms +ssh-rsaPubkeyAcceptedKeyTypes +ssh-rsa
5. 其他可能原因
权限问题:
chmod 700 ~/.sshchmod 600 ~/.ssh/id_rsa # 私钥权限必须为600
多账户冲突:
若配置了多个GitHub账户,需在 ~/.ssh/config 中为每个账户指定不同的 Host 别名和对应的私钥。
网络限制:
某些网络可能屏蔽443端口,尝试更换网络环境或使用代理
6.设置好ssh后就可以进行git clone了