我有一个服务器与Ubuntu 12.04设置。 我已经安装了OpenSSH,并试图从另一台计算机访问另一台计算机,使用此命令(修改为正确的值):
ssh [email protected]
当我在同一个networking中的任何其他计算机上时,我能够连接,但是当尝试从不同的networkingping我的服务器IP时,我所得到的是:
Request timeout for icmp_seq 0 Request timeout for icmp_seq 1 Request timeout for icmp_seq 2 Request timeout for icmp_seq 3 ping: sendto: No route to host Request timeout for icmp_seq 4 ping: sendto: Host is down Request timeout for icmp_seq 5 ping: sendto: Host is down Request timeout for icmp_seq 6 ping: sendto: Host is down Request timeout for icmp_seq 7 ping: sendto: Host is down Request timeout for icmp_seq 8 ping: sendto: Host is down Request timeout for icmp_seq 9 ping: sendto: Host is down Request timeout for icmp_seq 10
通过我的search我了解到ping有时是不可靠的,所以我尝试telnet my_ip ,它仍然无法连接。
我假设这是路由器的问题,可能是防火墙,但我不确定它可能是什么。
我确定使用http://www.yougetsignal.com/tools/open-ports/打开端口22
服务器所在的networking运行Netgear路由器。 ifconfig(Ubuntuterminal):
eth0 Link encap:Ethernet HWaddr 6c:3b:e5:b8:64:3e inet addr:192.168.1.5 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::6e3b:e5ff:feb8:643e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:83734 errors:0 dropped:0 overruns:0 frame:0 TX packets:47851 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:35300099 (35.3 MB) TX bytes:6103273 (6.1 MB) Interrupt:16 eth1 Link encap:Ethernet HWaddr 6c:3b:e5:b8:64:3f UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:17 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:456 errors:0 dropped:0 overruns:0 frame:0 TX packets:456 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:49255 (49.2 KB) TX bytes:49255 (49.2 KB)
我尝试访问的networking运行Verizon路由器。 ifconfig(Macterminal):
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 options=3<RXCSUM,TXCSUM> inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 inet 127.0.0.1 netmask 0xff000000 inet6 ::1 prefixlen 128 gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280 stf0: flags=0<> mtu 1280 en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=2b<RXCSUM,TXCSUM,VLAN_HWTAGGING,TSO4> ether a8:20:66:07:eb:a4 media: autoselect (none) status: inactive en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 20:c9:d0:32:05:02 inet6 fe80::22c9:d0ff:fe32:502%en1 prefixlen 64 scopeid 0x5 inet 192.168.1.69 netmask 0xffffff00 broadcast 192.168.1.255 media: autoselect status: active fw0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 4078 lladdr 00:3e:e1:ff:fe:7a:36:b0 media: autoselect <full-duplex>
还有什么可能导致这个问题?
tl; dr:你需要在你的路由器上configuration端口转发,或者在DMZ之外设置你的SSH服务器,或者类似的东西。 然后,使用您的路由器的IP地址,而不是您的服务器。
根据你的评论,你正在使用ssh [user]@192.168.0.[some number] 。 这只有在连接到同一个networking时才有效。
为什么? 因为(可能是AFAIK)你的路由器有一个公共的IP,你networking中的每台计算机都有一个私有IP。 你的公共IP看起来像这样: 71.32.87.80 。 这是非常随机的,偶尔会改变。 您的私有IP看起来像您在SSH命令中input的内容。 当您连接时,它被您的路由器分配给您的计算机。 每台使用给定路由器的计算机都被分配一个私有IP。
但是,由于stream量通过您的路由器,所以stream量就好像来自您的路由器,因此也就是您的公共IP。 这就是为什么如果一个网站使用基于IP地址的逻辑,networking中的每台计算机都将看起来一样。 这也是私人和公共知识产权概念的来源:您的公有知识产权是每个人都能看到的。 没有人除了你的路由器看到你的私人IP。
假设您的服务器连接到路由器A.当您在路由器A上,并且连接到192.168.0.x ,您正在连接到也连接到路由器A(您的服务器)的计算机。 当你不在路由器A上 – 假设你在路由器B上 – 而你连接到192.168.0.x ,你连接到一些连接到路由器B的计算机 – 而不是你的服务器 。 您的连接甚至不会离开路由器B的networking。
因此,您需要连接到路由器A的公共IP,而不是您的服务器的专用IP。 然后,您需要configuration路由器A将入站stream量转发到您的服务器。 这有效地使路由器A的IP作为您的服务器的入站stream量的IP。
注意:我知道这个解释并不是最容易理解的。 请让我知道我能做些什么来改善它。
听起来像是一个可能的netfilter问题给我。 你检查你的Netgear是否将端口22转发到你的服务器?
如果你有一个GUI安装添加包gufw,如果不是,我敢肯定,有一种方式从命令行,我只是不是一个Ubuntu的家伙。
然后确保允许从端口22上的“全部”访问,或者如果知道远程IP将它们添加为允许更安全的规则,则更好。