![查找外部 IP 并用于访问 ssh 服务器](https://linux22.com/image/1206163/%E6%9F%A5%E6%89%BE%E5%A4%96%E9%83%A8%20IP%20%E5%B9%B6%E7%94%A8%E4%BA%8E%E8%AE%BF%E9%97%AE%20ssh%20%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我想将一些大文件从我的 lubuntu 笔记本电脑 scp 到 Windows 桌面。但是,使用 ip -a 命令检索到的 ip 地址仅允许我从笔记本电脑连接到其自身。路由器或调制解调器是 Technicolor tg558v,提供商是 Carrytel(可能是 Bell 经销商)。可能是动态 ip。
我知道的解决方法。我知道我可以买一个便携式驱动器,但更喜欢免费的解决方案。我知道的备用方案是 Google Drive,它可以很好地传输较小的文件(低于 15G)或文件块,但希望 scp 或 rsync 可以更快/更方便。型号/路由器是 Technicolor,两者都有 wifi,尽管比有线连接慢。
答案1
你的路由器在您本地网络 (LAN) 上的所有设备之间共享您的公共互联网 IP 地址。
这是一个例子。
我的笔记本电脑的(本地)LAN 地址可以通过多种方式提供:它是 192.168.1.6
$ ip addr | grep inet
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
inet 192.168.1.6/24 brd 192.168.1.255 scope global dynamic noprefixroute enp3s0
inet6 2603:6000:a540:1678:7d12:5d46:507e:9f79/64 scope global temporary dynamic
$ hostname -I
192.168.1.6 2603:6000:a540:1678:7d12:5d46:507e:9f79 2603:6000:a540:1678:dd8:8ed5:30bb:81a0
我的公共互联网地址可以从路由器(需要登录)、Google(“我的 IP 地址是什么?”)或任何数量的互联网服务中查询:我们假装它是 123.45.67.89
$ wget -qO- ifconfig.co
123.45.67.89
来自互联网的入站连接会转到路由器。路由器决定 LAN 上的哪台机器会接收数据包。这就是它被称为路由器的原因:它路由数据包网络之间。
您必须在路由器上(而不是在 Ubuntu 系统上)创建端口转发规则,以告诉路由器如何处理入站 ssh 连接。您的路由器没有心灵感应 - 它需要被告知将入站 ssh 连接转发到 192.168.1.6。
之后就简单了:
如果我想通过 SSH 连接到我的笔记本电脑来自同一局域网上的另一台机器:ssh 192.168.1.6
如果我想通过 SSH 连接到我的笔记本电脑来自互联网上的任何其他地方:ssh 123.45.67.89
。路由器会自动将连接转发到192.168.1.6。