我从我的公司笔记本电脑(使用WSL+bash)通过SSH连接到公司Linux服务器,像往常一样ssh user@remote.host
(我在远程用户的。SSH/authorized_keys中提供了我的本地rsa公钥,因此我不必给出密码,尽管我不知道这是否重要)。
现在,我希望远程shell提示符(最好在远程~/.bashrc
中使用PROMPT_COMMAND
变量)触发本地机器上的命令或脚本。公司服务器没有外部访问权限,所以我不能直接创建一个"相反的"服务器。ssh连接。我希望以某种方式利用我连接到服务器的现有会话。
我设法得到的最接近的呼叫似乎是以下关于反向SSH隧道的手册以及netcat
侦听- on SO:Stackoverflow和on baeldung:www.baeldung.com/linux。不幸的是,在服务器的发行版中甚至没有nc
,所以我被困在那里。
- 我可以要求一步一步的例子不使用
nc
,因此希望,一些替代方法? - 我还可以要求指示所有精确的命令段吗,比如我应该在隧道的远端指定哪个本地主机,等等?事实上,我已经从网络上获取了许多ssh隧道的变体(例如
ssh -RfN ...
),但没有成功。 - 假设企业主机可能对其施加了一些限制,是否有可能实现(也许以其他方式-而不是使用反向隧道)?或者服务器配置在技术上不应该阻碍这种技术本身?
我承认我不是很清楚隧道的机制。提前感谢!
您可以在WSL上设置ssh服务器,并运行以下命令:
ssh -R 2222:localhost:22 your-corporate-linux-server ssh -p 2222 -o StrictHostKeyChecking=no $USER@localhost hostname
上面的命令ssh到your-corporate-linux-server,然后从那里连接回你的WSL,并显示你的WSL的主机名。
您需要在您的-corporate-linux-server上创建ssh密钥对,并将公钥放入WSL的authorized_keys中。
一旦上面的命令工作,你可以在COMMAND_PROMPT上工作。