我想利用协同作用将我的笔记本电脑和另一台机器连接在一起。
它们都在不同的网络上,但我已成功使用 SSH 隧道通过台式机网络上的一台可公开访问的机器(笔记本电脑 -> 中间机器 -> 台式机)从我的笔记本电脑连接到台式机。但是,我想反过来建立连接,即台式机 -> 笔记本电脑。我的笔记本电脑网络上没有可公开访问的机器。
我可以在连接到中间机器的笔记本电脑上运行命令,从而打开返回笔记本电脑的端口隧道吗?我的笔记本电脑运行的是 Ubuntu,其他两台机器运行的是 CentOS。
谢谢
答案1
如果你有一台中间机某处在互联网上,您可以从台式机和笔记本电脑通过 SSH 进入(机器根本不需要在同一个网络上),您可以很容易地通过中间机转发流量:
Step 1 - SSH from Laptop to Middle Machine:
Laptop --------SSH-----> Middle Machine
Step 1b - set up a TCP tunnel back to Laptop:
Laptop --------SSH-----> Middle Machine
<--RemoteForward--
Step 2 - SSH from Desktop to Middle Machine:
Laptop --------SSH-----> Middle Machine <--SSH-- Desktop
<--RemoteForward--
Step 2b - set up a TCP tunnel through Middle Machine:
Laptop --------SSH-----> Middle Machine <--SSH-- Desktop
<--RemoteForward-- <--LocalForward--
Step 3 - SSH from Desktop through Middle Machine and RemoteForward to Laptop:
Laptop --------SSH-----> Middle Machine <--SSH-- Desktop
<--RemoteForward-- <--LocalForward-- <--SSH--
看SuperUser 上的这个答案关于如何设置它(在该答案中,中间机器名为serverpc
,笔记本电脑为officepc
,台式机为homepc
)。由于您正在运行 SSH-through-SSH,因此会产生一些额外的网络和 CPU 开销,但它出奇地可用。
普通用户可以使用默认配置的 vanilla SSH 完成所有这些操作。您还可以在从台式机到笔记本电脑的最终隧道中使用 SSH 的所有功能 - SSHFS、X 转发、代理转发,等等。