Больше не могу использовать SSH на Gitlab Runner, «Ошибка проверки ключа хоста».

2855
Sven van Zoelen

Рассматриваемый сервер является бегуном и создает проекты с системным пользователем gitlab-runner. Этот пользователь используется для SSH на других серверах для развертывания кода и т.д ..

Всегда работал нормально, пока мы не добавили новый сервер в качестве места назначения. Команда SSHтеперь всегда завершается с ошибкой « Ошибка проверки ключа хоста». , Ошибка также выдается, когда я пробую другие серверы, которые работали раньше. known_hostsФайл очищается, но SSH не просит добавить сервер known_hostsбольше, он возвращает сообщение об ошибке напрямую.

Я проверил права доступа к ~/.sshпапке и файлам. Это правильно ( .ssh: 700, known_hosts: 600, id_rsa: 600, id_rsa.pub: 644). Аль перезагрузил сервер, но безуспешно.

Такое ощущение, что SSH работает неправильно. Вот отладочный вывод соединения с сервером через SSH.

OpenSSH_7.2p2 Ubuntu-4ubuntu2.4, OpenSSL 1.0.2g 1 Mar 2016 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Connecting to megatron.domain.com [10.139.20.204] port 22. debug1: Connection established. debug1: identity file /home/gitlab-runner/.ssh/id_rsa type 1 debug1: key_load_public: No such file or directory debug1: identity file /home/gitlab-runner/.ssh/id_rsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/gitlab-runner/.ssh/id_dsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/gitlab-runner/.ssh/id_dsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/gitlab-runner/.ssh/id_ecdsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/gitlab-runner/.ssh/id_ecdsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/gitlab-runner/.ssh/id_ed25519 type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/gitlab-runner/.ssh/id_ed25519-cert type -1 debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.4 debug1: Remote protocol version 2.0, remote software version OpenSSH_7.2p2 Ubuntu-4ubuntu2.4 debug1: match: OpenSSH_7.2p2 Ubuntu-4ubuntu2.4 pat OpenSSH* compat 0x04000000 debug1: Authenticating to megatron.achillescm.nl:22 as 'root' debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: algorithm: curve25519-sha256@libssh.org debug1: kex: host key algorithm: ecdsa-sha2-nistp256 debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: ecdsa-sha2-nistp256 SHA256:/zgPQuuy6sG8UuLG9EHFSFAuY1QYNvQzKSyNYq//DJ0 debug1: read_passphrase: can't open /dev/tty: No such device or address Host key verification failed. 

У кого-нибудь есть идея?

1
`ssh` действительно пытается спросить вас о принятии (и добавлении) ключа хоста, но по какой-то причине` / dev / tty` не может быть открыт. Я никогда не видел этого, и это говорит о том, что в вашей системе что-то не так, но с учетом предоставленной информации я понятия не имею, что. (Имя функции `read_passphrase` здесь несколько вводит в заблуждение; она также вызывается из` verify` в `ssh_connect.c`). Если вы перестраиваете known_hosts вручную, например, с помощью` ssh-keyscan`, это должно избежать этой конкретной проблемы, хотя что еще может пойти не так, я не могу сказать. dave_thompson_085 6 лет назад 0
@ dave_thompson_085 Спасибо за комментарий. Система очень проста в настройке; Ubuntu + Gitlab Runner, не более того. Sven van Zoelen 6 лет назад 0

3 ответа на вопрос

1
Sven van Zoelen

Я нашел проблему. Проблема заключалась в том, что known_hostsфайл имел неправильные разрешения.

Было установлено 600и должно быть 644.

0
kenorb
debug1: identity file /home/gitlab-runner/.ssh/id_rsa type 1 debug1: key_load_public: No such file or directory 

Выше строки предполагают, что .ssh/id_rsaсуществует ( type 1), но его открытый ключ ( .ssh/id_rsa.pub) для пользователя не имеет или получил некоторые проблемы ( type -1).

Поэтому убедитесь, что файл ~/.ssh/id_rsaсуществует, имеет 600разрешение, принадлежит пользователю. И ~/.ssh/id_rsa.pubсовпадает / принадлежит одной и той же личности (согласно этому посту ).

Вот простой тест для запуска с правами доступа sudo (например root):

sudo -u gitlab-runner sh -c 'cd; wc -l .ssh/id_rsa; stat .ssh/id_rsa; head -n1 .ssh/id_rsa' 

Смотрите также: Что означает «key_load_public: нет такого файла или каталога»?

С точностью до наоборот; `type 1` означает, что` id_rsa` может быть прочитан и содержит ключ RSA. (Другие алгоритмы - это другие положительные числа; _negative_ one - ошибка.) Исправлено: Не найдено _subfter_ файла `id_rsa-cert`. dave_thompson_085 6 лет назад 0
Указанная вами команда возвращает `bash: строка 0: cd: / root: разрешение запрещено wc: .ssh / id_rsa: разрешение отклонено stat: невозможно stat '.ssh / id_rsa': разрешение отклонено`. Когда я выполняю команду после `su gitlab-runner -`, она возвращает:` File: '.ssh / id_rsa' Размер: 3243 Блоки: 8 Блок ввода-вывода: 4096 обычный файл Устройство: fd01h / 64769d Индекс: 283738 Ссылки: 1 Доступ : (0600 / -rw -------) Uid: (999 / gitlab-runner) Gid: (998 / gitlab-runner) Доступ ..` Sven van Zoelen 6 лет назад 0
0
Guest12344

Иногда та же проблема возникает, если права доступа / dev / tty слишком ограничены. Тогда вы можете только ssh на сервер правильно, как пользователь root, никто другой не может. Исправление - это chmod 777 / dev / tty, чтобы другие могли это сделать.

666, вероятно, так же хорошо (или, может быть, лучше). Я не знаю ни одной причины, чтобы дать разрешение на выполнение устройству. Scott 5 лет назад 0

Похожие вопросы