J'ai un problème de connexion à un périphérique avec un client PARAMIKO (version 1.7.6-2) SSH: Lorsque j'utilise ssh à partir de la ligne de commande, cela fonctionne bien: p> Quelqu'un a vu cela avant? p> Voici la sortie verbeuse de la Commande SSH: P> Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import paramiko, os
>>> paramiko.common.logging.basicConfig(level=paramiko.common.DEBUG)
>>> ssh = paramiko.SSHClient()
>>> ssh.load_system_host_keys()
>>> ssh.load_host_keys(os.path.expanduser('~/.ssh/known_hosts'))
>>> ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
>>> ssh.connect("123.0.0.1", username='root', password=None)
DEBUG:paramiko.transport:starting thread (client mode): 0x928756cL
INFO:paramiko.transport:Connected (version 2.0, client OpenSSH_5.1)
DEBUG:paramiko.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:['aes128-cbc', '3des-cbc', 'blowfish-cbc', 'cast128-cbc', 'arcfour128', 'arcfour256', 'arcfour', 'aes192-cbc', 'aes256-cbc', 'rijndael-cbc@lysator.liu.se', 'aes128-ctr', 'aes192-ctr', 'aes256-ctr'] server encrypt:['aes128-cbc', '3des-cbc', 'blowfish-cbc', 'cast128-cbc', 'arcfour128', 'arcfour256', 'arcfour', 'aes192-cbc', 'aes256-cbc', 'rijndael-cbc@lysator.liu.se', 'aes128-ctr', 'aes192-ctr', 'aes256-ctr'] client mac:['hmac-md5', 'hmac-sha1', 'umac-64@openssh.com', 'hmac-ripemd160', 'hmac-ripemd160@openssh.com', 'hmac-sha1-96', 'hmac-md5-96'] server mac:['hmac-md5', 'hmac-sha1', 'umac-64@openssh.com', '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
DEBUG:paramiko.transport:Ciphers agreed: local=aes128-ctr, remote=aes128-ctr
DEBUG:paramiko.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
DEBUG:paramiko.transport:Switch to new keys ...
DEBUG:paramiko.transport:Trying discovered key b945197b1de1207d9aa0663f01888c3c in /home/waffleman/.ssh/id_rsa
DEBUG:paramiko.transport:userauth is OK
INFO:paramiko.transport:Authentication (publickey) failed.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/pymodules/python2.6/paramiko/client.py", line 327, in connect
self._auth(username, password, pkey, key_filenames, allow_agent, look_for_keys)
File "/usr/lib/pymodules/python2.6/paramiko/client.py", line 481, in _auth
raise saved_exception
paramiko.AuthenticationException: Authentication failed.
>>>
6 Réponses :
Sshclient de Paramiko a load_system_host_keys code> méthode que vous pouvez utiliser pour charger un ensemble spécifique à l'utilisateur des clés. À titre d'exemple dans les documents expliquant, il doit être exécuté avant de vous connecter à un serveur. P>
Pas de chance. J'ai aussi essayé de supprimer le connu_hosts pour voir si cela avait un effet.
Le serveur SSH sur le périphérique distant a refusé votre authentification. Assurez-vous que vous utilisez la touche correcte, la clé publique est présente dans [modifier] Je viens de regarder en arrière à travers votre sortie, vous vous authentifiez à l'aide de car autorisée_keys code>,
.ssh code> Les autorisations de répertoire sont correctes,
autorisé_keys code> Les autorisations sont correctes et l'appareil n'a pas d'autres restrictions d'accès. Il est difficile de dire ce qui se passe sans grumes du serveur.
Aucun code> authentification. Cela n'est généralement pas autorisé et est utilisé pour déterminer quelles méthodes d'authentification sont autorisées par le serveur. Il est possible que votre serveur utilise l'authentification basée sur l'hôte (ou aucun du tout!). p>
auth_none () code> est rarement utilisé, il n'est pas accessible à partir de la classe code> SSHClient CODE>, vous devrez donc utiliser
transport code > directement. p>
Salut @waffleman, je gagne également le même problème .. donc je mettais de la ligne de transport.Auth_none ('root') ligne dans le code, mais maintenant d'erreur comme .. NomError: Nom 'Transport' n'est pas défini
@Spike: Avez-vous déclaré le transport? Transport = ssh.get_transport ()
@ JIMB - Nice Catch. Mon hôte me permettait de me permettre de la ligne de commande sans mot de passe, même lorsque j'avais utilisé ssh -i $ home / .ssh / id_rsa commande code>, mais ce n'était que quand j'ai remarqué que je n'étais pas réellement en utilisant les clés que j'ai pu résoudre le problème.
SSH -V CODE> DITES,
DEBUG1: Authentification réussie (GSSAPI-with-Mic). CODE> (Ceci est ad, je crois). J'ai copié mon fichier autorisé_keys à l'hôte et à Paramiko fonctionne.
J'ai une erreur similaire lorsque le serveur utilise l'authentification AD. Je pense que c'est un bogue de paramiko. J'ai appris que je dois définir des clés SSH avant d'utiliser le paramiko. P>
Assurez-vous que les autorisations sur les fichiers de clé publique et privée (et éventuellement du dossier contenant) sont définies sur très restrictives (I.e. CHMOD 600 ID_RSA). Il s'avère que cela est requis (par le système d'exploitation?) Pour utiliser les fichiers sous forme de touches SSH. A trouvé cela de ma collègue utile :) Assurez-vous également que vous utilisez le nom d'utilisateur correct pour la clé SSH donnée. P>
Un suivi très tard sur cette affaire, je crois que je rencontrais le même problème que Waffleman, dans un contexte d'un réseau confiné.
L'indice d'utilisation de Donc, au cas où cela est utile aux autres, mon travail autour est ci-dessous. Je viens de remplacer la méthode OK, ceci est fragile, comme auth_none code> sur L'objet
Transport code> s'est avéré très utile, mais je me suis retrouvé un peu perplexe sur la manière de mettre en œuvre cela. Chose est, à compter d'aujourd'hui au moins, je ne peux pas obtenir l'objet code> Transport code> d'un objet code> SSHCLIPE code> jusqu'à ce qu'il soit connecté; Mais il ne se connecte pas dans la première place ... P>
_auth code>. P>
_auth code> est une chose privée. Mes autres alternatives ont été - en fait sont toujours - pour créer manuellement le
Transport code> et
canal code> objets, mais pour le moment, je me sens comme si je suis beaucoup mieux à partir de tout ça sous la hotte. p>
Il pourrait y avoir des raisons différentes sur Par exemple, 9 15:50:26 PC1UDATAHGW04 SSHD [27501]: Authentification refusée: mauvais
Propriété ou modes pour le répertoire / Accueil / Testuffer P>
blockQuote> Si vous exécutez queue - f / var / journal / sécurisé code>: p>
LS -LAD / Accueil / Testuffer Code> Pour voir les autorisations, vous verrez par exemple dans notre cas: P>
$ ls -lad /home/testuser
drwxrwxr-x 16 testuser testgroup 57344 Oct 9 15:23 /home/testuser
J'ai essayé ceci pour se connecter à un QNAP TS-409 qui exécute un linux incorporé. Travaillé bien.
Je suppose que vous pourriez faire
ssh root@123.0.0.1 code> pour voir comment SSH se connecte.
faire "ssh -v root@123.0.0.1" et voir si SSH utilise l'authentification publique ou une autre méthode d'authentification?
Il semble que c'est la réponse pour vous -> Stackoverflow.com/Questions/14274566/...