2017-08-10 2 views
2

Seit 3 ​​Tagen versuche ich eine sFTP-Verbindung einzurichten, um eine Datei auf einen Client-Server hochzuladen.Golang sFTP SSH: Authentifizierung fehlgeschlagen

ich dies mit: https://gist.github.com/svett/b7f56afc966a6b6ac2fc

Der einzige Unterschied ist, dass ich hinzugefügt:

sshConfig := &ssh.ClientConfig{ 
    User: "0000003579", 
    Auth: []ssh.AuthMethod{ 
     //SSHAgent(), 
     PublicKeyFile("C:\\GoDev\\src\\Texel.ca\\Bnc_Ftp\\.ssh\\id_rsa"), 
    }, 
    HostKeyCallback: ssh.InsecureIgnoreHostKey(), 
    HostKeyAlgorithms: []string{"ssh-dss"}, 
} 
sshConfig.Ciphers = append(sshConfig.Ciphers, "aes128-cbc") 

weil mein Client-Server noch cbc verwenden und noch ssh-dss verwenden.

Mein Problem:

Wenn zu verbinden versuchen, erhalte ich die folgende Antwort:

wählen fehlgeschlagen: ssh: Handshake fehlgeschlagen: ssh: nicht in der Lage zu sein, versuchte Methoden [none publickey zu authentifizieren ] bleiben keine unterstützte Methoden

I mit dem gleichen Anmeldeinformationen über openSSH in einer Befehlszeile

zu verbinden versucht
ssh -oHostKeyAlgorithms=+ssh-dss ***@2XXX.XXX.XXX.XX -vvv 

und es funktioniert.

Kann ich mehr Informationen über meinen Fehler erhalten, wie den Befehl -vvv mit openSSH? Oder hat einer von euch eine Idee?

Vielen Dank!

EDIT

Gerade für weitere Informationen gibt es ein Arbeitswerkzeug, dass gerade jetzt tut das SFTP transfert und es funktioniert.

Aber es ist eine .bat-Datei, deshalb ändern wir es, um zu gehen.

Es WinSCP verwenden, um eine Verbindung mit dem sFTP mit einem privaten Schlüssel RSA Putty herzustellen.

Das könnte eines der Probleme sein, als ob ich richtig verstehe, kann ich nicht einen privaten Schlüssel mit Golang SSH-Paket verwenden.

Also habe ich sowohl den Putty-Schlüssel und eine Konvertierung zu openSSH versucht, aber beide werden nicht funktionieren.

+0

Können Sie die Protokolle auf dem Server überprüfen?Es scheint die Authentifizierung zu sein, die fehlschlägt (wenn es die HostKeyAlgorithm- oder die Ciphers-Liste wäre, würden Sie einen "no common algorithm" -Fehler bekommen) – JimB

+0

Leider habe ich keinen Zugriff auf den Server. Sie haben einen sehr langsamen Service und versuchen, sie dazu zu bringen, etwas zu überprüfen, was Wochen dauert. Kann ich die Protokolle nicht auf der Clientseite abrufen? Wie bei openSSH in einem Terminal, habe ich anscheinend viel mehr Informationen als Client. – KarDiamond

+1

Verwenden Sie das verlinkte Beispiel genau so, wie es geschrieben wurde? Es schluckt stillschweigend Fehler, also würde ich damit beginnen, den Code dort zu korrigieren und etwas Logging hinzuzufügen. Andernfalls können Sie in das ssh-Paket wechseln und 'debugHandshake' in" true "ändern, um weitere Informationen zu erhalten oder eigene Debug-Protokollierung hinzuzufügen. – JimB

Antwort

0

Mit openssh sind Sie hinzufügen dss zu den Algorithmen, und verwenden einen unbekannten Schlüssel. Dieser Schlüssel ist Ihr Standard für den Benutzer und wahrscheinlich nicht der, den Sie auf der Go-Seite verwenden?

Auf der Go-Seite verwenden Sie nur der dss-Algorithmus und ein RSA-Schlüssel, der das Problem sein könnte?

Stellen Sie sicher, dass Sie in beiden Fällen den gleichen Schlüssel und die gleichen Algorithmen verwenden und dass der Algorithmus dem Schlüssel entspricht.

Wenn immer noch stecken vielleicht die volle Ausgabe von -vvv und alle die Fehler auf der Go-Seite.

+0

Mein Wissen in SSH ist ein bisschen fehlt. :) Ich habe versucht, ohne die HostKeyAlgorithms vorher, aber es würde Ether nicht funktionieren. Ich werde eine Bearbeitung für weitere Informationen auf dem Hauptbeitrag hinzufügen. Siehe Bearbeiten des privaten Schlüssels. Kann ich auch -vvv verwenden, um den Fehler auf der Go-Seite auszugeben? – KarDiamond

+0

Ich könnte falsch liegen, aber ich würde die Schlüssel vermuten. Ich kann nicht sehen, wie es funktionieren würde, wie Sie es bitten, dss (dsa-Schlüssel) zu verwenden, aber einen rsa-Schlüssel verwendend. Sie sollten openssh mit dem Schlüssel versuchen, den Sie hier über die Option -i angegeben haben, damit Sie sicher sind, dass Sie den gleichen Schlüssel testen oder einen anderen DSA-Schlüssel auf der Go-Seite versuchen (wenn Sie sagen, dass der Server nur dss verwendet) . On go side no -vvv wird nichts tun, folgen Sie den Anweisungen oben von jimb. –

+0

Versuchen Sie auch, openssl nur mit ssh-dss zu verwenden und sehen Sie, ob Ihre Annahme richtig ist, dass dies der verwendete Algorithmus sein soll. –

Verwandte Themen