Назад | Перейти на главную страницу

Аутентификация на основе ключа SSH работает с перебоями

У нас есть сервер разработки, на котором запущены jenkins с различными заданиями, которые запускают сценарии оболочки, которые подключаются к нашему живому серверу через SSH (с использованием аутентификации на основе ключей).

Кажется, это не работает надежно.

Если я протестирую SSH-соединение самостоятельно, войдя на сервер разработки как пользователь jenkins, а затем подключившись по SSH к живому серверу, аутентификация сработает и выполнит вход без запроса пароля.

Если я запускаю одно из заданий Дженкинса вручную, оно работает большую часть времени (хотя одно из них не удалось сегодня утром, что побудило меня написать этот билет), но если я автоматизирую задание для ночного запуска, оно не работает большую часть времени (я думаю, что однажды оно сработало ).

Точка отказа каждый раз находится в SSH-соединении:

> ssh -T nepton@xxx
> Permission denied, please try again.
> Permission denied, please try again.
> Permission denied (publickey,password).

Любая помощь будет принята с благодарностью, поскольку я полностью застрял, и Linux определенно не является моей областью знаний.

Дополнительная информация:

Разрешения /var/lib/jenkins/.ssh/ на Dev:

drwx------  2 jenkins jenkins 4096 Apr  4 13:31 .
drwxr-xr-x 13 jenkins jenkins 4096 Apr  4 13:38 ..
-rw-------  1 jenkins jenkins 1679 Apr  4 13:31 id_rsa
-rw-r--r--  1 jenkins jenkins  400 Apr  4 13:31 id_rsa.pub
-rw-r--r--  1 jenkins jenkins 1338 Apr  4 13:33 known_hosts

Разрешения /home/nepton/.ssh/ на Live-сервере:

drwx------ 2 nepton nepton 4096 Mar 20 17:37 .
drwx------ 4 nepton nepton 4096 Apr  2 10:52 ..
-rw------- 1 nepton nepton 2005 Apr  8 10:23 authorized_keys
-rw-r--r-- 1 nepton nepton 1106 Apr  1 10:39 known_hosts

Информация об отладке

ssh -v -T -i /var/lib/jenkins/.ssh/id_rsa nepton@xxx
OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to xxx [xx.xxx.xx.xxx] port 22.
debug1: Connection established.
debug1: identity file /var/lib/jenkins/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048
debug1: identity file /var/lib/jenkins/.ssh/id_rsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA xxx
debug1: Host 'xxx' is known and matches the ECDSA host key.
debug1: Found key in /var/lib/jenkins/.ssh/known_hosts:7
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /var/lib/jenkins/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password
debug1: read_passphrase: can't open /dev/tty: No such device or address
debug1: Authentications that can continue: publickey,password
Permission denied, please try again.
debug1: read_passphrase: can't open /dev/tty: No such device or address
debug1: Authentications that can continue: publickey,password
Permission denied, please try again.
debug1: read_passphrase: can't open /dev/tty: No such device or address
debug1: Authentications that can continue: publickey,password
debug1: No more authentication methods to try.
Permission denied (publickey,password).
Build step 'Execute shell' marked build as failure

У меня была такая же проблема, и я нашел решение, которое может быть связано здесь. Если система, к которой вы пытаетесь подключиться по SSH, находится за балансировщиком нагрузки (или чем-то подобным), возможно, что иногда ваш SSH может быть успешным, а иногда он терпит неудачу, если машины, на которых выполняется балансировка нагрузки, не имеют общего домашнего каталога (или, по крайней мере, вашей информации .ssh, такой как открытый ключ).

С вашей стороны это будет выглядеть так, как будто вы входите в систему на одном хосте, но на самом деле это периодически другой реальный хост, что может объяснить такое странное поведение.

Как вы говорите в комментариях, он не использует тот ключ, который вам нужен. Вы можете указать правильный ключ следующим образом:

ssh -T -i /path/to/real/id_rsa nepton@xxx