Ошибка матрицы при подключении к нескольким хостам с помощью файла конфигурации ssh и ключей RSA - PullRequest
1 голос
/ 29 марта 2012

У меня ошибка при подключении к нескольким серверам с использованием Fabric с использованием ключей RSA и файла конфигурации ssh. Мой клиент - снежный барс 10.6.8 с python 2.7.2, Fabric 1.4.0, ssh (библиотека) 1.7.13. Я использую несколько ключей RSA с парольной фразой (использование без парольной фразы невозможно). Я добавил свои парольные фразы в ssh-add. Я могу ssh на все мои серверы без проблем. Я добавил env.use_ssh_config = True в мой потрясающий файл, чтобы прочитать мой конфигурационный файл ssh.

Когда я подключаюсь к одному серверу с ключами RSA (с парольными фразами), все работает нормально.

Но когда я подключаюсь к 2 или более хостам, я получаю «Пароль для входа» для второго сервера.

fab -H server1,server2 test
[server1] Executing task 'test'
[server1] run: uname -s
[server1] out: Linux

[server2] Executing task 'test'
[server2] run: uname -s
[server2] Login password:

Мой баснословный файл

from fabric.api import *
import ssh
ssh.util.log_to_file("paramiko.log", 10)

env.use_ssh_config = True

def test():
    run('uname -s')

Мой конфигурационный файл ssh

Host server1
HostName xx.xx.xx.xx
Port 6666
User AB1
HashKnownHosts yes
PreferredAuthentications publickey
AddressFamily inet    

Host server2
HostName xx.xx.xx.xx
Port 6666
User BC2
HashKnownHosts yes
PreferredAuthentications publickey
AddressFamily inet

В моем конфигурационном файле ssh я попытался удалить «HashKnownHosts yes», но это ничего не изменило.

paramiko.log

DEB [20120329-17:33:30.747] thr=1   ssh.transport: starting thread (client mode): 0x1382350L
INF [20120329-17:33:30.769] thr=1   ssh.transport: Connected (version 2.0, client OpenSSH_4.3)
DEB [20120329-17:33:30.786] thr=1   ssh.transport: kex algos:['diffie-hellman-group-exchange-sha1', 'diffie-hellman-group14-sha1', 'diffie-hellman-group1-sha1'] server key:['ssh-rsa', 'ssh-dss'] client encrypt:['aes128-ctr', 'aes192-ctr', 'aes256-ctr', 'arcfour256', 'arcfour128', 'aes128-cbc', '3des-cbc', 'blowfish-cbc', 'cast128-cbc', 'aes192-cbc', 'aes256-cbc', 'arcfour', 'rijndael-cbc@lysator.liu.se'] server encrypt:['aes128-ctr', 'aes192-ctr', 'aes256-ctr', 'arcfour256', 'arcfour128', 'aes128-cbc', '3des-cbc', 'blowfish-cbc', 'cast128-cbc', 'aes192-cbc', 'aes256-cbc', 'arcfour', 'rijndael-cbc@lysator.liu.se'] client mac:['hmac-md5', 'hmac-sha1', 'hmac-ripemd160', 'hmac-ripemd160@openssh.com', 'hmac-sha1-96', 'hmac-md5-96'] server mac:['hmac-md5', 'hmac-sha1', 'hmac-ripemd160', 'hmac-ripemd160@openssh.com', 'hmac-sha1-96', 'hmac-md5-96'] client compress:['none', 'zlib@openssh.com'] server compress:['none', 'zlib@openssh.com'] client lang:[''] server lang:[''] kex follows?False
DEB [20120329-17:33:30.786] thr=1   ssh.transport: Ciphers agreed: local=aes128-ctr, remote=aes128-ctr
DEB [20120329-17:33:30.786] thr=1   ssh.transport: using kex diffie-hellman-group1-sha1; server key type ssh-rsa; cipher: local aes128-ctr, remote aes128-ctr; mac: local hmac-sha1, remote hmac-sha1; compression: local none, remote none
DEB [20120329-17:33:30.866] thr=1   ssh.transport: Switch to new keys ...
DEB [20120329-17:33:30.875] thr=2   ssh.transport: Trying SSH agent key ar8298z4c935cde079ef98763678ecc5
DEB [20120329-17:33:30.935] thr=1   ssh.transport: userauth is OK
INF [20120329-17:33:31.017] thr=1   ssh.transport: Authentication (publickey) failed.
DEB [20120329-17:33:31.039] thr=2   ssh.transport: Trying SSH agent key 0273aff478dddddd05378738dhe98798
DEB [20120329-17:33:31.055] thr=1   ssh.transport: userauth is OK
INF [20120329-17:33:31.135] thr=1   ssh.transport: Authentication (publickey) successful!
DEB [20120329-17:33:31.140] thr=2   ssh.transport: [chan 1] Max packet in: 34816 bytes
DEB [20120329-17:33:31.159] thr=1   ssh.transport: [chan 1] Max packet out: 32768 bytes
INF [20120329-17:33:31.159] thr=1   ssh.transport: Secsh channel 1 opened.
DEB [20120329-17:33:31.189] thr=1   ssh.transport: [chan 1] Sesch channel 1 request ok
DEB [20120329-17:33:31.218] thr=1   ssh.transport: [chan 1] Sesch channel 1 request ok
DEB [20120329-17:33:31.237] thr=1   ssh.transport: [chan 1] EOF received (1)
DEB [20120329-17:33:31.237] thr=1   ssh.transport: [chan 1] EOF sent (1)
DEB [20120329-17:33:31.275] thr=3   ssh.transport: starting thread (client mode): 0x10f9050L
INF [20120329-17:33:32.126] thr=3   ssh.transport: Connected (version 2.0, client OpenSSH_5.3)
DEB [20120329-17:33:32.156] thr=3   ssh.transport: kex algos:['diffie-hellman-group-exchange-sha256', 'diffie-hellman-group-exchange-sha1', 'diffie-hellman-group14-sha1', 'diffie-hellman-group1-sha1'] server key:['ssh-rsa', 'ssh-dss'] client encrypt:['blowfish-cbc', 'aes256-cbc', 'aes256-ctr'] server encrypt:['blowfish-cbc', 'aes256-cbc', 'aes256-ctr'] client mac:['hmac-sha1', 'hmac-sha1-96'] server mac:['hmac-sha1', 'hmac-sha1-96'] client compress:['none', 'zlib@openssh.com', 'zlib'] server compress:['none', 'zlib@openssh.com', 'zlib'] client lang:[''] server lang:[''] kex follows?False
DEB [20120329-17:33:32.156] thr=3   ssh.transport: Ciphers agreed: local=aes256-ctr, remote=aes256-ctr
DEB [20120329-17:33:32.156] thr=3   ssh.transport: using kex diffie-hellman-group1-sha1; server key type ssh-rsa; cipher: local aes256-ctr, remote aes256-ctr; mac: local hmac-sha1, remote hmac-sha1; compression: local none, remote none
DEB [20120329-17:33:32.209] thr=3   ssh.transport: Switch to new keys ...
DEB [20120329-17:33:32.243] thr=2   ssh.transport: Trying SSH agent key ar8298z4c935cde079ef98763678ecc5
DEB [20120329-17:33:32.307] thr=3   ssh.transport: userauth is OK
INF [20120329-17:33:32.426] thr=3   ssh.transport: Authentication (publickey) failed.
DEB [20120329-17:33:32.444] thr=2   ssh.transport: Trying SSH agent key 0273aff478dddddd05378738dhe98798
DEB [20120329-17:33:32.476] thr=3   ssh.transport: userauth is OK
INF [20120329-17:33:32.570] thr=3   ssh.transport: Authentication (publickey) failed.
DEB [20120329-17:33:32.578] thr=2   ssh.transport: Trying SSH agent key 7382deeeee873897883ccc9878972878
DEB [20120329-17:33:32.608] thr=3   ssh.transport: userauth is OK
INF [20120329-17:33:32.702] thr=3   ssh.transport: Authentication (publickey) failed.
DEB [20120329-17:33:32.711] thr=2   ssh.transport: Trying SSH agent key 98792098cccccccccccceeeeeeee9878
DEB [20120329-17:33:32.743] thr=3   ssh.transport: userauth is OK
INF [20120329-17:33:32.843] thr=3   ssh.transport: Authentication (publickey) failed.

Ключ агента SSH 0273aff478dddddd05378738dhe98798 одинаков для обоих серверов. Он подключается на первом сервере, но не на втором сервере. Я пробовал использовать разные серверы в разных порядках, но у меня всегда одна и та же проблема с фабрикой, запрашивающей пароль для второго сервера.

Как я могу это исправить?

Спасибо

1 Ответ

1 голос
/ 26 апреля 2012

Если для параметра use_ssh_config задано значение true, это должно привести к выбору имени пользователя. Вы можете проверить это , запустив эти строки в реплик Python.

...