Ausführen von rdesktop durch einen SSH-Tunnel in einem Befehl

3505
Matt Alexander

Ich arbeite ssh server -L 3392:192.168.1.138:3389in einem Terminalfenster und dann rdesktop 127.0.0.1:3392in einem anderen, um über einen SSH-Tunnel eine Verbindung zu einem Windows-Computer herzustellen. Wie kann ich dies in einem Befehl zusammenführen, den ich aus einer Gnome-Verknüpfung oder etwas ausführen kann?

5

3 Antworten auf die Frage

2
Edward Anderson

I assume you have a password-less SSH key set up so that ssh does not prompt for a password.

You can use a bash script like this:

#!/bin/bash ssh server -L 3392:192.168.1.138:3389 -N & SSH_PID=$! sleep 5 # wait for the connection to establish rdesktop 127.0.0.1:3392 kill $SSH_PID 

I'm making an assumption here that rdesktop does not fork and return until the program ends. If it does, the SSH connection will die immediately. If that's true, you'd need to watch for running rdesktop processes, loop/sleep until they're all dead, and then close the SSH connection.

2
Kadu

Als Verbesserung der oben genannten Punkte müssen Sie die SSH-PID am Ende nicht beenden.

ssh server -fL 3392:192.168.1.138:3389 sleep 5  rdesktop 127.0.0.1:3392 

Die obigen Anweisungen weisen ssh an, a sleep 5auf dem Remove-Server auszuführen und in den Hintergrund (-f) zu wechseln. Dadurch bleibt die Verbindung 5 Sekunden lang geöffnet. Dies ist genug Zeit, um den Befehl rdesktop auszuführen. Die Portweiterleitung bleibt an Ort und Stelle, während der Datenverkehr durchläuft. Sobald Sie das rdesktop verlassen, stirbt die ssh automatisch.

Dies ist eine viel bessere Antwort und auch als One-Liner geeignet! Ng Oon-Ee vor 6 Jahren 0
0
LtWorf

Mein "Mann ssh" sagt:

ssh [a bunch of options] [user@]hostname [command] 

Sie können den Befehl einfach verwenden, scheinen aber etwas anderes zu verwenden, da Ihre Syntax meiner nicht entspricht. Überprüfen Sie in der Manpage, dass ein Befehl gestartet werden sollte.