运行git clone的Chef会导致主机密钥验证错误

cmo*_*key 4 capistrano ssh-keys chef-infra

我正在使用Capistrano调用的Chef.

有一个使用git克隆存储库的指令.

git node['rails']['rails_root'] do
  repository "git@myrepo.com:/myproj.git"
  reference "master"
  action :sync
  user node['rails']['rails_user']
  group node['rails']['rails_group']
end
Run Code Online (Sandbox Code Playgroud)

当它达到这一点时,我得到:

 ** [out :: 10.1.1.1] STDERR: Host key verification failed.
Run Code Online (Sandbox Code Playgroud)

所以,我需要添加一个"known_hosts"条目.没问题.但是对哪个用户?我的问题的核心是我不知道哪个用户正在执行什么命令,以及他们是否正在调用sudo等.

我已经运行了keyscan来填充root的known_hosts,而我用ssh的用户也无济于事.

注意,这个git repo是读保护的,需要ssh密钥访问.

Vla*_*lad 5

您可以使用ssh包装器方法.看这里了解详情.

简要地执行以下步骤

首先,在cookbooks/COOKBOOK_NAME/files/default目录中创建一个名为wrap-ssh4git.sh的文件,其中包含以下内容:

#!/usr/bin/env bash
/usr/bin/env ssh -o "StrictHostKeyChecking=no" $1 $2
Run Code Online (Sandbox Code Playgroud)

然后,使用以下块进行部署:

directory "/tmp/private_code/.ssh" do
  owner "ubuntu"
  recursive true
end

cookbook_file "/tmp/private_code/wrap-ssh4git.sh" do
  source "wrap-ssh4git.sh"
  owner "ubuntu"
  mode 00700
end

deploy "private_repo" do
  repo "git@github.com:acctname/private-repo.git"
  user "ubuntu"
  deploy_to "/tmp/private_code"
  action :deploy
  ssh_wrapper "/tmp/private_code/wrap-ssh4git.sh"
end
Run Code Online (Sandbox Code Playgroud)


cmu*_*ur2 2

git 存储库将被克隆为用户node['rails']['rails_user'](通过https://docs.chef.io/resource_git.html) - 我假设用户known_hosts 文件是您必须修改的文件。