Wie kann ich nautilus einrichten, um eine ssh-Verbindung zu verwenden, die von einem Expect-Skript hergestellt wird?

1079
Daniel Förster

Um eine SSH-Verbindung zu automatisieren, habe ich ein Skript mit Expect geschrieben, das gut funktioniert. Ich möchte jedoch dieses Skript in der Nautilus-Verbindung zur Serverfunktion verwenden. Meine Idee war, dieses Expect-Skript irgendwie in die Datei .ssh / config aufzunehmen, da Nautilus die dort beschriebenen Verbindungen verwenden kann, aber ich weiß nicht wie. Leider kann ich keinen RSA-Schlüssel auf den Server kopieren. Es ist eine Multihop-Verbindung, und ich kann nicht auf den ersten Server schreiben. Dieser erste Server fragt nur nach einem Passwort und der Maschine, zu der ich mich verbinden kann. Das Passwort ist also nicht wirklich das Problem, da es auch von Nautilus geliefert werden könnte. Jede Hilfe wird geschätzt, danke!

2

1 Antwort auf die Frage

1
Jakuje

Sie können kein Passwort verwenden ssh_config. Sie können jedoch Portweiterleitung verwenden (wenn dies in der Jumpbox zulässig ist):

SSHPASS=password sshpass -e ssh -L 2222:remotehost:22 user@jumpbox 

und dann

ssh -p 2222 localhost 

bringt Sie direkt zum Remote-Host. Sie können das in Ihre einfügen ssh_config, zum Beispiel:

Host remote-forwarded Hostname localhost Port 2222 

und dann verbinden wie

ssh remote-forwarded 

Ähnlich funktioniert es in Nautilus.

Portweiterleitung in der Jumpbox verboten

In diesem Fall wird es komplizierter. Sie müssen den Proxy-Befehl verwenden, um die Portweiterleitung direkt vom Remote-Host aus einzurichten. Deine Config wird länger sein:

Host remote-forwarded Hostname localhost Port 2222 Host jumpbox Hostname jumpbox-host Host remote Hostname remote-host ProxyCommand ssh -W %h:%p jumpbox LocalForward 2222 localhost:22 

Ansonsten sollte es zuerst genauso funktionieren

SSHPASS=password sshpass -e ssh remote 

und dann direkt zum anderen Host:

ssh remote-forwarded 
Vielen Dank! Leider habe ich zwei Probleme: sshpass hat keine Option -L, also habe ich sshpass durch ssh ersetzt, ist das ok? Und "ssh -p 2222 localhost" gibt mir die folgende Fehlermeldung: "ssh: Verbindung zum Host-Localhost-Port 2222: Verbindung abgelehnt" Muss ich Port 2222 öffnen? Ich bin neu in diesem Bereich, tut mir leid, dass ich gefragt habe. Daniel Förster vor 8 Jahren 0
Ja. Ich habe deine Syntax wieder vergessen. Allerdings mussten Sie nicht das "Expect" -Skript schreiben, aber Sie könnten "sshpass" verwenden, um Sie zum ersten Server "zu bringen". Bearbeiten: Geben Sie den ersten Befehl mit ausführlicher Protokollierung (-vvv) ein. Die Portweiterleitung ist möglicherweise nicht zulässig. Jakuje vor 8 Jahren 0
Ok, danke, ich denke, das würde funktionieren. Ich stelle jedoch fest, dass die Weiterleitung von Ports von der Jumpbox verboten ist. Daniel Förster vor 8 Jahren 0
Ich habe die Antwort für den Fall mit verbotener Portweiterleitung auf Jumbox geändert. Aber ich habe es nicht getestet, so dass es möglicherweise immer noch Probleme gibt. Lass es mich wissen, wenn es für dich funktioniert. Jakuje vor 8 Jahren 0
Großartig! Ich sehe die Dateien in Nautilus. Ihr .ssh / config-Eintrag "Host remote" hat den Trick ausgeführt, wenn er in nautilus eingegeben wurde, um eine Verbindung zum Server herzustellen. Ich denke jedoch, dass Ihre Zeile "SSHPASS = Kennwort sshpass -e ssh jumpbox" durch "SSHPASS = Kennwort sshpass -e ssh remote" (?) Ersetzt werden sollte und "ssh remote-forwarded" auch nicht funktioniert hat (Fehler: "ssh: connect Localhost-Port 2222 hostet: Verbindung abgelehnt "), war aber nicht erforderlich. Daniel Förster vor 8 Jahren 0
Ja. Na sicher. Mein Fehler. Es gab auch einen Tippfehler in der Option "LocalForward". Kannst du es noch einmal versuchen? Jakuje vor 8 Jahren 0
Das funktioniert jetzt, aber ich sehe keinen großen Unterschied zwischen "ssh remote" und "ssh remote-forwarded". Beide funktionieren einwandfrei. Ist es eine Frage der Passworteingabe? Ein weiterer Punkt ist, dass ich mit `SSHPASS = password sshpass -e ssh remote` nicht erfolgreich war und stattdessen` ssh remote` verwendet habe. Wie gesagt, die Eingabe eines Passworts stört mich nicht in der Befehlszeile und Nautilus kann das Passwort speichern. Vielleicht für andere, die das gleiche Problem haben: Vergessen Sie nicht, Ihre Benutzernamen auf den verschiedenen Computern anzugeben, beispielsweise über einen Eintrag "User username" in ".ssh / config". Ich danke dir sehr! Daniel Förster vor 8 Jahren 0
Insbesondere danke ich Ihnen für eine Lösung ohne ein "Expect" -Skript. Diese Idee hat mir sowieso nicht gefallen. Daniel Förster vor 8 Jahren 0
Ja, genau wie du schreibst. Das "Remote-Forwarded" sollte das Passwort für den Proxy nicht benötigen. Vergessen Sie auch nicht, diese Antwort als Lösung zu kennzeichnen, wenn sich Ihr Problem dadurch gelöst hat. Jakuje vor 8 Jahren 0