我们正在使用 ubuntu 10.04 LTS 服务器。我可以从自己网络中的其他 ubuntu 机器通过 ssh 访问该服务器。但是当我们尝试从 LAN 外部访问服务器时,我们无法进行 ssh 连接。我可以给出输出:starlite@starlite-laptop:~$ nmap -A -T4 192.168.1.46
Starting Nmap 5.00 at 2011-05-20 14:03 IST
Interesting ports on 192.168.1.46:
Not shown: 996 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.3p1 Debian 3ubuntu5 (protocol 2.0)
| ssh-hostkey: 1024 00:12:34:45:56:67:78:89:9070:91 (DSA)
|_ 2048 5d:96:00:12:34:45:56:67:78:89:90:36:70:91:a6 (RSA)
5001/tcp open apc-agent APC PowerChute agent
5432/tcp open postgresql PostgreSQL DB
8080/tcp open http Apache Tomcat/Coyote JSP engine 1.1
|_ html-title: Apache Tomcat
Service Info: OS: Linux; Device: power-device
Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 8.35 seconds
但是当从不同的全局 IP 进行 nmap 时,输出是
starlite@starlite-laptop:~$ nmap 122.XXX.XXX.XXX -p 22
Starting Nmap 5.00 at 2011-05-20 16:50 IST
Interesting ports on 122.XXX.XXX.XXX:
PORT STATE SERVICE
22/tcp closed ssh
The ssh connection is terminated as shown below -
starlite@starlite-laptop:~$ ssh [email protected]
ssh: connect to host 122.XXX.XXX.XXX port 22: Connection refused
请帮助我,我该如何解决这个问题
答案1
您是否检查过服务器的 IP 是否为 C 类(本地网络)或具有 Internet IP。如果是本地 IP,您将无法连接到它,除非从 Internet IP 重新路由到该网络。
C 类 IP 例如:192.168.0.1(咖啡馆常用)192.168.1.10 以及通常任何 192.168.XX
在你的问题中192.168.1.46属于 C 类,除了重新路由连接外,无法通过常规方式访问。
另一个 IP122.XXX.XXX.XXX是一个可以工作的 Internet IP
我的建议是告诉连接到互联网的路由器(具有 122.XXX.XXX.XXX 的路由器)将到该端口的所有连接重定向到网络中的 192.168.1.46 IP。
答案2
您需要将服务器的内部 IP 地址 NAT 为公共 Internet 地址。不确定您使用的是哪种类型的路由器/网关,但对于大多数家庭用户来说,这只需启用特定 IP 作为 DMZ 主机,然后使用某种形式的动态 DNS 将名称公开即可。对于企业,您需要使用您的 IP 获取一个公开的静态 IP 地址,并提供您的防火墙规则设置为接受 TCP/22。
答案3
稍后会详细说明。目前仅列出要点:
- ssh 端口转发(在路由器或互联网网关中;通常为端口 22)
- iptables 目录
答案4
我认为问题出在防火墙上,请尝试以下操作:
iptables -I INPUT -i eth0 -p tcp --dport 22 -j ACCEPT