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 versuchtssh -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.
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
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
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