我正在尝试使用 Putty 在服务器和笔记本电脑之间建立隧道。问题是,由于笔记本电脑没有公共 IP 地址,我必须建立反向连接。但我真的不知道该怎么做。
让我演示一下我想要的:
服务器(端口:6000)----------> 笔记本电脑(端口:7000)
但由于笔记本电脑没有公共 IP 地址,因此我必须
服务器(端口:6000)<---------- 笔记本电脑(端口:7000)
你能告诉我应该写什么作为起运港、目的地等等吗?
答案1
取决于您想要哪种设置:
设置 1)服务器正在监听
ssh tunel LAN destination
SERVER (listen on port 6000) ==========> LAPTOP -----> ip:port
(LAN 目标也可以是 localhost:port 来连接笔记本电脑本身)
PUTTY 设置:右键单击putty窗口标题,选择更改设置/隧道并填写:
source port: 6000
destination: ip:port (or hostname:port)
select "Remote"
SSH:ssh -R 6000:主机名:端口
设置 2)笔记本电脑正在监听
ssh tunel destination
LAPTOP (listen on port 7000) ==========> SERVER -----> ip:port
再次,目的地可以是 localhost:port 来连接到服务器本身。
PUTTY 设置:
source port: 7000
destination: ip:port (or hostname:port)
select "Local"
SSH:ssh -L 7000:主机名:端口
在这两种情况下,您还可以指定(在 Putty 中通过复选框)监听的笔记本电脑/服务器是否也接受来自其他主机的连接。
答案2
箭头的方向与哪台机器具有可公开路由的 IP 地址无关——您需要根据要解决的问题确定箭头的方向。连接将始终从您的笔记本电脑发起(因为它不能直接从另一台机器寻址),但您将根据希望端口转发的工作方式使用一个或另一个连接转发参数。
因为我不知道putty
,所以我会给出相应的命令OpenSSH;希望能够轻松在 GUI 配置框中找到相应的选项putty
。
如果您希望将 到 的连接laptop:7000
转发到server:6000
,则可以使用ssh -L 7000:server:6000
。如果连接源自您的笔记本电脑,则可以将其稍微修改为:ssh -L localhost:7000:server:6000
。这会将笔记本电脑上的端口限制为笔记本电脑本身发起的连接。
使用此命令时,服务器上的程序必须监听端口6000
以进行连接。笔记本电脑(或本地网络上的其他地方)上的程序必须能够连接到您的localhost:7000
(或您的机器的不可路由地址,端口7000
)才能启动连接。
如果您希望将与 建立的连接server:6000
转发到laptop:7000
,则可以使用ssh -R 6000:localhost:7000
。默认情况下,这仅对在服务器计算机上发起的连接开放。如果您希望它对所有可以联系服务器的计算机开放,则可以使用ssh -R *:6000:localhost:7000
。
使用此命令,笔记本电脑上的程序必须监听端口7000
以进行连接。服务器上(或服务器网络上的其他地方)的程序必须能够连接到server:6000
(或服务器的可路由地址,端口6000
)以启动连接。
我花了好几年才搞清楚-L
和-R
连接转发之间的区别。它-L
表示程序将尝试连接大号本地,并且-R
表示程序将尝试连接R表情上。(不用担心区别;每次我需要它时,我都必须在手册中查找。)