Развертывание Capistrano ** Ошибка проверки ключа хоста
Я следил за несколькими предложениями с других сайтов, но безрезультатно. Когда я пытаюсь
cap deploy:cold
Я последовательно получаю "Ошибка проверки ключа хоста".
Я пробовал все. Я передал ssh'd с моего компьютера на удаленный, удалил и прочитал оба ключа из известных хостов, клонировал из github, настроил свой открытый ключ как на сервере, так и на локальном в github.
Что мне здесь не хватает?
Capfile:
https://gist.github.com/1308243
Ошибка:
https://gist.github.com/1308255
Ответы
Ответ 1
Добавьте к вашему deploy.rb:
ssh_options[:forward_agent] = true
default_run_options[:pty] = true
Или войдите на сервер (ы), на который вы развертываете (как ваш пользователь развертывания) и запустите:
ssh [email protected]
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is **:**:**:.
Are you sure you want to continue connecting (yes/no)? yes
В большинстве случаев я вижу эту проблему, когда github.com не находится в вашем ~/.ssh/known_hosts
Ответ 2
Вместо использования git ssh url, который выглядит следующим образом:
git @github.com: definelabs/urbanairship.git
используйте только URL-адрес для чтения, который выглядит следующим образом:
git://github.com/definelabs/urbanairship.git
Ответ 3
Вы упомянули, что cap deploy:setup
работал и cap deploy
не удалось. Поэтому похоже, что сообщение об ошибке не связано с подключением ssh и связано с его проверкой git. Возможно, это связано с тем, что ваш удаленный сервер git работает с аутентификацией на основе ключа и на сервере отсутствует требуемый ключ.
Ответ 4
В дополнение к
ssh_options[:forward_agent] = true
default_run_options[:pty] = true
Мне также понадобился этот, ниже:
def add_domain_to_known_hosts(hostname)
ip_address = "`dig +short A #{hostname}`"
run "ssh-keygen -R #{hostname}"
run "ssh-keygen -R #{ip_address}"
run "ssh-keygen -R #{hostname},#{ip_address}"
run "ssh-keyscan -H #{hostname},#{ip_address} >> ~/.ssh/known_hosts"
run "ssh-keyscan -H #{ip_address} >> ~/.ssh/known_hosts"
run "ssh-keyscan -H #{hostname} >> ~/.ssh/known_hosts"
end
Хотя, следует отметить, что PTY не приветствуется capistrano:
https://github.com/capistrano/capistrano#a-word-about-ptys
Ответ 5
Один файл, связанный с ~/YOUR_USER_NAME /.ssh/authorized_keys2
на сервере. Я считаю, что он должен содержать открытый/закрытый ключ (один из двух, я думаю, частный?)