我在我的 Android 设备上的端口 22 上运行 sshdroid 服务器,当我使用我的电脑通过 ssh (LAN) 连接到它时,我得到了这个
root@kali:~# ssh -l root 100.107.219.116
The authenticity of host '100.107.219.116 (100.107.219.116)' can't be established.
RSA key fingerprint is xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '100.107.219.116' (RSA) to the list of known hosts.
SSHDroid
Use 'root' as username
Default password is 'admin'
[email protected]'s password:
root@android:/data/data/berserker.android.apps.sshdroid/home #
现在当我尝试通过 ssh (互联网)访问它时
root@kali:~# ssh -l root x.xx.xx.xxx
ssh: connect to host x.xx.xx.xxx port 22: No route to host
root@kali:~#
所以我尝试通过 nmap 扫描外部端口并将其作为输出。
root@kali:~# nmap x.xx.xx.xxx
Starting Nmap 6.47 (http://nmap.org/) at 2015-09-29 16:30 IST
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 3.13 seconds
root@kali:~# nmap -Pn x.xx.xx.xxx
Starting Nmap 6.47 (http://nmap.org/) at 2015-09-29 16:30 IST
Nmap scan report for x.xx.xx.xxx
Host is up (0.11s latency).
All 1000 scanned ports on 1-39-60-154.live.vodafone.in (x.xx.xx.xxx) are filtered
Nmap done: 1 IP address (1 host up) scanned in 5.77 seconds
root@kali:~#
我使用的是 DIR-600M 路由器。如何通过互联网通过 ssh 连接到我的设备?
答案1
您的路由器后面可能有多个主机(例如您的 android)。
路由器无法知道将传入的 ssh 数据包 (*) 发送到何处,或者您是否接受它们。
您必须告诉您的路由器如何处理您接受的传入数据包(发送到哪个 IP)。
这通常被称为转发端口在路由器设置网页上。
例如
ssh (port 22) -> 192.168.1.22
web (port 80&443) -> 192.168.1.80
Foo (port 12345, 666, 1756) -> 192.168.1.100
etc
(*) 一个常见的反对意见是:
但我的路由器不能扫描本地 IP 来查找开放的 22 端口并更新端口转发吗?
不,如上所述,路由器无法猜测您是否愿意接受传入连接(仅考虑扫描您的开放端口所花费的时间)。
答案2
正如@Archemar 所说,您必须将端口 22 转发到您的一台计算机。即使路由器后面只有一台机器,路由器也无法假设您想要转发端口。默认设置是阻止所有内容,从安全角度来看这是明智的。
AFAIK,这意味着
为您想要将端口转发到的每台计算机分配一个静态本地 IP。如果您使用 DHCP,您将在路由器配置界面中通过将 IP 分配给计算机的 MAC 地址(即其网络接口 MAC 地址)来执行此操作。
将端口 22 转发到您选择的静态 IP。
您没有询问,但如果您想通过 ssh 连接到本地网络上的多台计算机,则可以使用非标准端口(每台计算机一个)来实现。