我是 ssh 新手,几天来一直在绞尽脑汁想如何将家用计算机连接到远程计算机。我发现我无法连接,因为它们在不同的网络上。我相信这个问题有一个简单的解决方案,但在徒劳地寻找解决问题的一天之后,我不得不求助于你的帮助。
我的远程服务器的IP地址为192.168.0.1
,我的家用电脑为 ,192.168.18.118
两者位于同一端口(暂时)1729
。唯一的区别是用户名,家用电脑用户名为Thomas
,远程用户名为Tom
。
请帮忙解决这个问题,通常通过输入远程服务器的用户名、远程服务器的 IP 地址和远程服务器的端口进行连接,但出现超时错误。提前谢谢您。
编辑 2019.10.14
问题是我不知道如何使用所有这些。我不知道如何使用所有这些,因为我在互联网上观看了半音视频、文章等等,但是我找不到有关如何通过 ssh 连接两台这样的计算机的具体解释。此外,甚至找不到至少一些有关如何完成此操作的示例。假设我家用 PC 的全局 IP 地址为70.***.**.**
,本地地址为192.168.18.118
。还假设我的远程 PC 的全局 IP 地址为75.***.**.**
,本地地址为192.168.0.1
。两者都包括1729
端口和主机名 archlinux、家用 PC 的用户名Thomas
和远程Tom
。现在的问题是,如何将这两台计算机相互连接,也就是说,如何从我的家用 PC 访问远程 PC ,反之亦然?如果您能帮助我将家用电脑连接到遥控器,我将不胜感激,因为我真的需要它。
继续编辑 2019.10.14
我尝试了你说的方法并得到了答案
ssh:连接到主机
75.***.**.**
端口1729
:连接超时
出于兴趣,我尝试以这种方式连接到我的家用电脑,仅使用家用电脑的全局 IP 地址和家用电脑上的用户名,然后我得到了这个响应
ssh:连接到主机
70.***.**.**
端口1729
:连接被拒绝
编辑于 2019.10.15
$ ss -nltu
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 0.0.0.0:68 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:5432 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:6463 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:1729 0.0.0.0:*
我怎样才能完成这个过程?
编辑 2019.10.16
在家用电脑上连接全球 IP 家用电脑的答案:
$ ssh Thomas@70.***.**.**
ssh: connect to host 70.***.**.** port 22: Connection refused
在家用电脑上连接全球 IP 远程电脑的答案:
$ ssh Tom@75.***.**.**
ssh: connect to host 75.***.**.** port 22: Connection timed out.
扫描家用PC全局地址的结果:
$ nmap 70.***.**.** -p 22
Starting Nmap 7.80 ( https://nmap.org ) at 2019-10-16 00:44 +04
Nmap scan report for 70.***.**.**
Host is up (0.00039s latency).
PORT STATE SERVICE
22/tcp closed ssh
Nmap done: 1 IP address (1 host up) scanned in 0.35 seconds
当我扫描远程 PC 的全局 IP 地址时,我给出了类似的答案,但STATE
指示为filtered
。
答案1
远程服务器的地址不能是192.168.*.*
。此地址范围适用于“本地”LAN。它实际上看起来像这样:
- 您的计算机位于本地局域网上,该局域网上的所有设备都在 192.168.。范围。
- 这些设备之一(通常是 192.168.0.1 或 192.168.0.254)是路由器。要与本地 LAN 之外的设备进行通信,LAN 上的设备会将数据包发送到路由器。
- 路由器的另一端连接到互联网。在那一端,它有一个真实的互联网地址(在 192.168.100.1 之外)。。和 10。。.* 范围)。
- 当您的 LAN 上的任何设备连接到互联网时,它看起来就像拥有路由器的互联网地址(请转至https://www.showmyip.com/查看路由器的地址)。
另一方面,鉴于 192.168,情况也是如此。。地址,服务器也在本地局域网上,因此要与其通信,您必须知道连接到其本地局域网的路由器的互联网地址。
但这还不够,因为:
- 路由器通常配置为仅允许出站连接通过(您可以使用互联网地址启动连接,但互联网不能启动与您的连接)
- 假设路由器允许入站连接,则无法判断哪个本地设备是预期的接收方,因为它们只有一个地址(但这是它们自己的地址)和一个端口。但是可以将它们配置为将所有到特定端口(例如 1749)的连接转发到本地 LAN 上的特定机器。
TLDR;您需要 1) 您的服务器或其路由器的实际互联网地址和 2) 确保路由器已充分配置以允许连接发生。
PS:在连接中,只有目标端口是重要的。
编辑:
要从家用电脑连接到服务器,您只需要知道服务器的互联网地址(75.xxx.xx.xx)和端口(在您的情况下似乎是 1729,否则标准 SSH 端口:22)。
当然,您还需要一个 SSH 客户端。使用命令行 SSH,这将提供,并在提示时输入 Tom 的密码。您也可以使用 GUI 客户端,例如 PuTTY。配置也很简单,只需要一个主机名或地址以及可选的端口。ssh -p 1729 [email protected]
这是基础,通过适当的配置,您可以避免输入密码,或者使用密钥库身份验证(除非您使用非常非常长的密码,否则通常更安全)。
请注意,连接始终是从您的 PC 到服务器。
编辑#2
检查服务器。在典型的服务器上:
ss -nltu
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 80 127.0.0.1:3306 *:*
tcp LISTEN 0 128 *:22 *:*
tcp LISTEN 0 100 *:25 *:*
tcp LISTEN 0 128 :::80 :::*
tcp LISTEN 0 128 :::22 :::*
tcp LISTEN 0 100 :::25 :::*
tcp LISTEN 0 128 :::443 :::*
此命令列出了监听端口。25 是邮箱,22 是 SSH,80 和 443 是 HTTP 服务器,3306 是 MySql DB(但它只接受来自本地主机的连接)。':::' 套接字是 IPv6,':' 是 IPv4。