Plesk环境下Bitbucket主机密钥冲突致Git克隆失败求助
问题描述
已执行以下命令尝试修复Bitbucket仓库克隆失败问题:
ssh-keygen -f /var/www/vhosts/DOMAIN/.ssh/git_known_hosts -R bitbucket.org curl https://bitbucket.org/site/ssh >> /var/www/vhosts/buchungsformular.spar-mit.com/.ssh/git_known_hosts
但克隆操作仍无法完成,Plesk返回三类关键错误:
- 'bitbucket.org'的公钥已存在于
/var/www/vhosts/DOMAIN/.ssh/git_known_hosts中,ECDSA主机密钥与IP地址'xxx'的密钥不符,违规密钥在第1行,匹配密钥在第8行,严格校验规则导致主机密钥验证失败 do_known_hosts: hostkeys_foreach failed: Permission denied:尝试将Bitbucket公钥写入指定文件时遭遇权限拒绝- 远程主机标识已更改,RSA密钥指纹为SHA256:4......,移除违规密钥后克隆问题仍未解决
解决方案
1. 修复.ssh目录及文件权限
权限拒绝是核心障碍,先确保目标目录和文件的权限与归属正确:
# 设置.ssh目录权限为700(仅所有者可读写执行) chmod 700 /var/www/vhosts/DOMAIN/.ssh # 设置git_known_hosts文件权限为600(仅所有者可读写) chmod 600 /var/www/vhosts/DOMAIN/.ssh/git_known_hosts # 将目录及文件归属改为网站对应的系统用户(替换为实际用户,比如Plesk订阅用户、apache/nginx) chown YOUR_WEB_USER:YOUR_WEB_USER /var/www/vhosts/DOMAIN/.ssh -R
2. 彻底重置Bitbucket主机密钥
直接删除旧的已知主机文件,重新获取官方密钥,避免残留冲突项:
# 删除旧的git_known_hosts文件 rm -f /var/www/vhosts/DOMAIN/.ssh/git_known_hosts # 重新拉取Bitbucket官方主机密钥并写入文件 curl https://bitbucket.org/site/ssh > /var/www/vhosts/DOMAIN/.ssh/git_known_hosts # 再次修正文件权限与归属 chmod 600 /var/www/vhosts/DOMAIN/.ssh/git_known_hosts chown YOUR_WEB_USER:YOUR_WEB_USER /var/www/vhosts/DOMAIN/.ssh/git_known_hosts
3. 测试SSH连接有效性
明确指定使用修复后的已知主机文件,测试与Bitbucket的SSH连接:
ssh -o UserKnownHostsFile=/var/www/vhosts/DOMAIN/.ssh/git_known_hosts git@bitbucket.org
若返回logged in as YOUR_USERNAME.则说明连接正常,此时可重新尝试克隆仓库。
4. 配置Git全局使用指定已知主机文件(可选)
为避免每次克隆都手动指定文件,可配置Git全局参数:
git config --global core.sshCommand "ssh -o UserKnownHostsFile=/var/www/vhosts/DOMAIN/.ssh/git_known_hosts"
内容的提问来源于stack exchange,提问作者Tom Krebs
相关产品推荐
相关产品推荐

