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