You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过互联网实现SSH端口转发,远程访问无公网设备的SSH服务

如何通过互联网实现SSH端口转发,远程访问无公网设备的SSH服务

看起来你是想通过一台有公网的PC(也就是你提到的192.168.1.50)作为跳板,连接到同一内网里没有公网的设备(192.168.1.55)的SSH服务对吧?你之前试的命令其实是内网环境下用的,在外网笔记本上直接用根本连不上目标PC,我来帮你理清楚正确的操作步骤:

第一步:搞定中间PC的公网访问权限

  • 首先在你的中间PC(192.168.1.50)上,执行curl ifconfig.me(Windows用户可以直接访问网页版的IP查询工具),拿到它的公网IP,比如假设是203.0.113.10
  • 登录家里的路由器后台,找到「端口转发」(部分路由器叫「虚拟服务器」)功能,添加一条规则:
    • 外部端口:选一个自定义端口(比如2222,尽量别用默认的22,减少被恶意扫描的风险)
    • 内部IP:填写中间PC的内网IP 192.168.1.50
    • 内部端口:填写中间PC的SSH默认端口22
    • 协议选择TCP,保存规则

第二步:在笔记本上执行端口转发命令

你的笔记本现在处于外网环境,打开终端执行这条命令:

ssh -L 2222:192.168.1.55:22 admin@203.0.113.10 -p 2222
  • 参数解释:
    • -L 2222:192.168.1.55:22:把你笔记本的2222端口,通过中间PC转发到目标设备192.168.1.55的22端口
    • admin@203.0.113.10:中间PC的公网IP和登录用户名
    • -p 2222:你刚才在路由器上设置的外部转发端口

执行后输入中间PC的登录密码(如果已经配置了SSH密钥登录就不用输),保持这个终端窗口打开,别关掉

第三步:连接目标设备的SSH

打开笔记本上的另一个终端窗口,执行这条命令:

ssh 目标设备用户名@localhost -p 2222

比如如果目标设备是树莓派,用户名是pi,就输入:

ssh pi@localhost -p 2222

输入目标设备的SSH密码,就能成功连上啦!

额外小提示

  • 为了安全,建议给中间PC和目标设备的SSH都开启密钥登录,禁用密码登录,避免被暴力破解
  • 如果你的公网IP是动态的(隔段时间会变化),可以用DDNS服务绑定一个固定域名,这样不用每次记IP
  • 要是觉得开两个终端麻烦,也可以用ssh -J参数直接跳转,命令是:
ssh -J admin@203.0.113.10:2222 目标设备用户名@192.168.1.55

这个命令会直接通过中间PC跳转连接到目标设备,不用单独做端口转发

备注:内容来源于stack exchange,提问作者Shannon

火山引擎 最新活动