
You have no controlling tty and no DISPLAY. Cannot read passphrase.
warning: Authentication failed.
Disconnected (local); authentication cancelled by user (Authentication cancelled by user.).
Disconnect reason 13, exit code = 77
scp: warning: ssh2 client failed to authenticate. (or you have too old ssh2 installed, check with ssh2 -V)
Ich erhalte diesen Fehler, wenn ich mein Skript ausführe. SSH funktioniert in beide Richtungen zwischen den Servern
Antwort1
Ihr Problem besteht darin, dass Sie eine Art Authentifizierungsmethode verwenden, die eine Benutzereingabe erfordert (in Ihrem Fall offenbar eine Passphrase zum Entschlüsseln eines privaten Schlüssels oder vielleicht ein Kennwort), Ihr Programm jedoch keine Benutzereingaben empfangen kann, da es weder in einer grafischen Sitzung (wodurch verhindert wird, dass ssh
ein Fensterformular zur Eingabe der Passphrase geöffnet wird) noch in einem Terminal gestartet wird (und ssh
Sie daher nicht interaktiv nach der Passphrase fragen kann).
ssh
funktioniert, wenn Sie das Öffnen einer Sitzung testen, da Sie in diesem Fall in einem Terminal starten ssh
und es daher kein Problem darstellt, die Passphrase zu erhalten.
Wenn Ihr Skript ohne steuerndes TTY ausgeführt wird (beispielsweise als Cron-Job), benötigen Sie eine nicht interaktive Authentifizierung. Beispielsweise einen privaten Schlüssel ohne Passphrase. Dies ist natürlich etwas unsicher und Sie möchten wahrscheinlich den Befehlssatz einschränken, der von Ihrem Skript über SSH ausgeführt werden kann, um zu verhindern, dass Angreifer, die den privaten Schlüssel kennen, eine voll funktionsfähige Shell auf dem Server erhalten.