我认为这类问题以前已经得到解答,但由于缺乏网络知识,几年来我一直在互联网上搜索并阅读了许多网站,试图通过互联网连接到 SSH 服务器。但我失败了。我想知道是否可以使用 SSH 连接两个系统,而无需使用 ngrok 等第三方服务。
我有两台运行 ArchLinux 的计算机。计算机 A 和 B 位于本地网络中,但我想设置 ssh,以便我可以通过互联网上的 SSH 从 B 访问 A(就像 Anydesk、Teamviewer 和其他此类远程桌面软件的连接方式一样)。
系统详细信息:
1. 系统连接到 [Digisol] 路由器。2. 两者都安装了openssh
软件包。系统 A 正在运行sshd
。A 可以通过 LAN 连接到 B。
系统A的主机名:archlinux-pc
系统B的主机名:archlinux
在两个系统上,用户名都是苏拉夫。也就是说,我想连接到苏拉夫在archlinux-pc。
- 在路由器(Digisol)上设置虚拟服务器配置:
Current Virtual Server Forwarding Table
ServerName Protocol Local IP Address Local Port WAN Port State Action
SSH tcp 192.168.2.9 22-22 22-22 Enable
- 我的公共 IP 是 xx.xxx.171.113,据报告身份识别。IP 在几个月的时间内都没有变化。
whatismyipaddress.com 显示相同的 IPv4,但是IPv6:未检测到
我的路由器有一个名为 WAN 配置的部分,其中显示了一些不同的 IP:
WAN Configuration
Interface Protocol IP Address Gateway DNS Status
WAN PPPoE xx.xxx.18.27 xx.xxx.0.1 xxx.xxx.91.2 8.8.8.8 xxx.xxx.88.2 Link Up(PPPoE)
我已经尝试过从系统 B 使用,这花了很长时间但根本没有连接。ssh [email protected]
我也尝试过这些链接:
https://raspberrypi.stackexchange.com/questions/13861/setting-up-ssh-over-internet-on-my-pi
https://help.ubuntu.com/community/SSH/OpenSSH/PortForwarding
如果可以的话,如何使用 SSH 从系统 B 连接到系统 A,而无需任何其他服务(如 ngrok)?另外,我可以使用在 Android 手机上运行的 termux 通过 SSH 连接到系统 A 吗?
答案1
假设两个系统都在同一个本地网络上,位于同一个路由器后面:
正在连接至 [电子邮件保护]将带你进入 192.168.2.9
从那里你可以使用本地地址(大概是 192.168.2.X)通过 ssh 连接到下一个系统
如果您想从外部访问它,您必须添加额外的端口转发:
ServerName Protocol Local IP Address Local Port WAN Port State Action
SSH tcp 192.168.2.9 22-22 22-22 Enable
SSH2 tcp 192.168.2.X 22-22 63000-63000 Enable
现在你应该能够连接到[电子邮件保护]端口 63000 并到达另一个系统。最好移动到非默认 SSH 端口,以降低因提供服务而收到的暴力登录尝试次数。
答案2
实现 IPv6 寻址。向 DNS 添加 AAAA 记录。在防火墙中打开端口。无需 NAT。
为了消除前缀改变的可能性,请从您的 ISP 获取静态分配。