2012-03-29 11 views
1

Ich habe einen Fehler, wenn ich eine Verbindung zu mehreren Servern mit Fabric mit RSA-Schlüssel und SSH-Konfigurationsdatei. Mein Client ist Schneeleopard 10.6.8 mit Python 2.7.2, Fabric 1.4.0, SSH (Bibliothek) 1.7.13. Ich verwende mehrere RSA-Schlüssel mit Passphrase (die Verwendung ohne Passphrase ist keine Möglichkeit). Ich habe meine Passphrases zu ssh-add hinzugefügt. Ich kann ohne Probleme auf alle meine Server zugreifen. Ich fügte env.use_ssh_config = True meiner Fab-Datei hinzu, um meine ssh-Konfigurationsdatei zu lesen.Fabric Fehler beim Verbinden mit mehreren Hosts mit SSH-Config-Datei & RSA-Schlüssel

Wenn ich eine Verbindung mit einem Server mit RSA-Schlüssel (mit Passphrasen) funktioniert alles gut.

Aber wenn ich mit 2 oder mehr Hosts verbinden, bekomme ich "Login Passwort" für den zweiten Server.

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: 

Mein fabfile

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

env.use_ssh_config = True 

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

Meine ssh-Konfigurationsdatei

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 

In meiner ssh config-Datei, habe ich versucht, "HashKnownHosts ja" zu entfernen, aber das hat sich nicht verändert etwas.

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', '[email protected]'] server encrypt:['aes128-ctr', 'aes192-ctr', 'aes256-ctr', 'arcfour256', 'arcfour128', 'aes128-cbc', '3des-cbc', 'blowfish-cbc', 'cast128-cbc', 'aes192-cbc', 'aes256-cbc', 'arcfour', '[email protected]'] client mac:['hmac-md5', 'hmac-sha1', 'hmac-ripemd160', '[email protected]', 'hmac-sha1-96', 'hmac-md5-96'] server mac:['hmac-md5', 'hmac-sha1', 'hmac-ripemd160', '[email protected]', 'hmac-sha1-96', 'hmac-md5-96'] client compress:['none', '[email protected]'] server compress:['none', '[email protected]'] 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', '[email protected]', 'zlib'] server compress:['none', '[email protected]', '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-Agent Schlüssel 0273aff478dddddd05378738dhe98798 ist das gleiche für beide Server. Es verbindet sich auf dem ersten Server, schlägt aber auf dem zweiten Server fehl. Ich habe versucht, mit verschiedenen Servern in verschiedenen Aufträgen, aber ich habe immer das gleiche Problem mit Fabric fragt nach einem Passwort für den zweiten Server.

Wie kann ich das beheben?

Danke

+0

Nachdem ich die Serverprotokolle überprüft habe, habe ich das Problem gefunden. Fabric verwendet den falschen Benutzer, wenn es versucht, eine Verbindung auf dem zweiten Server herzustellen. – Tom

+0

Problem ist behoben, ich musste nur den Benutzernamen angeben :) – Tom

Antwort

1

Mit der use_ssh_config Option auf true gesetzt, die den Benutzernamen abholen sollte. Sie können es in einem Python-Replikat by running these lines testen.