使用一个命令通过 SSH 隧道运行 rdesktop

使用一个命令通过 SSH 隧道运行 rdesktop

ssh server -L 3392:192.168.1.138:3389我在一个终端窗口中运行,然后rdesktop 127.0.0.1:3392在另一个终端窗口中运行,以通过 SSH 隧道连接到 Windows 计算机。我如何将其合并为一个可以从 Gnome 快捷方式或其他方式运行的命令?

答案1

我假设您已经设置了一个无密码的 SSH 密钥,这样 ssh 就不会提示输入密码。

您可以使用如下 Bash 脚本:

#!/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

我在这里假设 rdesktop 不会分叉并返回,直到程序结束。如果分叉并返回,SSH 连接将立即断开。如果这是真的,您需要监视正在运行的 rdesktop 进程,循环/休眠直到它们全部终止,然后关闭 SSH 连接。

答案2

作为上述操作的改进,您不必在最后终止 SSH PID。

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

上述命令将告诉 ssh 在远程服务器上运行sleep 5并转到后台 (-f)。这将使连接保持打开状态 5 秒,这段时间足以运行 rdesktop 命令。当有流量通过时,端口转发将保持不变,因此只要您退出 rdesktop,ssh 就会自动停止。

答案3

我的“man ssh”说:

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

您可以直接使用命令,但您似乎使用了其他命令,因为您的语法与我的不匹配。无论如何,请查看手册页,应该有可以启动命令的内容。

相关内容