You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux环境下通过Bash脚本SSH克隆Bitbucket仓库的认证问题

解决Bitbucket SSH克隆时的主机认证问题

咱们先搞清楚你遇到的这个错误到底是啥情况:当SSH第一次连接陌生主机时,会弹出提示让你确认主机的指纹,防止中间人攻击。但你的Bash脚本是非交互式执行的,没法手动确认,所以就抛出了「The authenticity of host 'bitbucket.org...' can't be established」这个错误。

下面给你几个可行的解决方案,按安全程度从高到低排列:

方案一:提前添加Bitbucket官方SSH指纹到known_hosts(推荐生产环境用)

这个方法最安全,直接把Bitbucket官方验证过的SSH指纹提前写入VM的~/.ssh/known_hosts文件,这样SSH就不会再弹出确认提示了。

你可以在Bash脚本里加入这行命令:

echo "bitbucket.org ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==" >> ~/.ssh/known_hosts

上面这串是Bitbucket官方公布的RSA指纹,你完全可以放心用。

如果想自己验证指纹,也可以先在本地执行ssh-keyscan bitbucket.org获取,再把输出内容追加到known_hosts里,但要注意确保这个过程没有被中间人篡改。

方案二:临时禁用SSH严格主机检查(仅测试环境用)

这个方法简单粗暴,但非常不安全,因为它会跳过主机指纹验证,可能让你遭遇中间人攻击,所以只建议在测试环境临时用。

你可以在git clone命令前加上SSH参数,跳过检查:

GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=no" git clone git@bitbucket.org:projectname-com/ansible.git

额外注意:确保SSH密钥权限正确

SSH对密钥文件的权限要求特别严格,权限太松会直接拒绝使用。所以在脚本里一定要加上这两行,设置正确的权限:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa  # 这里替换成你实际的私钥路径

Terraform配置里的小细节

如果你是用Terraform的remote-exec执行脚本,记得先把私钥传到VM上,比如用file provisioner:

resource "aws_instance" "your_vm" {
  # 这里是你的VM基础配置,比如AMI、实例类型等

  # 上传私钥到VM
  provisioner "file" {
    source      = "/path/to/your/local/private_key"  # 本地私钥路径
    destination = "/home/your_user/.ssh/id_rsa"       # VM里的路径,替换成你的用户名
  }

  # 执行初始化脚本
  provisioner "remote-exec" {
    inline = [
      "chmod 700 ~/.ssh",
      "chmod 600 ~/.ssh/id_rsa",
      "echo 'bitbucket.org ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==' >> ~/.ssh/known_hosts",
      "git clone git@bitbucket.org:projectname-com/ansible.git"
    ]
  }
}

这样一套操作下来,你的脚本应该就能顺利克隆Bitbucket仓库了。

内容的提问来源于stack exchange,提问作者Daniel_FA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:27:31