Ubuntu 11.04 桌面:无法从外部连接到 openssh-server

Ubuntu 11.04 桌面:无法从外部连接到 openssh-server

我使用 Ubuntu 11.04 作为桌面操作系统。我安装了 openssh-server,可以从同一台计算机连接到它。我想使用它从另一台计算机(在同一本地网络上)创建到这台计算机的连接。由于某种原因没有响应。Ufw 处于非活动状态。另一台具有相同设置的计算机可以正常工作。这台计算机只有一个 NIC。

机器 A(Ubuntu 11.04)

  • IP地址:192.168.1.22
  • 已安装 SSH 服务器
  • ufw 状态:不活跃
  • sshd 似乎绑定到所有接口
  • 从机器 B ping 到这台机器成功
  • 尝试了 ssh root@localhost,只是想看看是否有效,结果确实如此

Netstat 结果 机器 A

unix 2 [ ACC ] STREAM LISTENING 13480 2275/ssh-agent /tmp/ssh-BKiZJjfU2214/agent.2214
unix 2 [ ACC ] STREAM LISTENING 13651 2195/gnome-keyring- /tmp/keyring-VvDtwo/ssh

记录结果

09/02/11 10:25:26 AM    ubuntu-a    kernel  [ 5564.741977] Inbound IN=eth0 OUT= MAC=xxxx SRC=192.168.1.44 DST=192.168.1.22 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=45506 DF PROTO=TCP SPT=49089 DPT=22 WINDOW=14600 RES=0x00 SYN URGP=0

机器 B(Ubuntu 11.04)

  • IP地址:192.168.1.33
  • 安装 ssh-server
  • 尝试从机器 A 登录,成功了
  • 尝试登录机器 A,导致连接超时

我在这里遗漏了什么?

答案1

运行这个:

netstat -lepn | grep ssh

在结果中,您可以看到 sshd 是否绑定到所有接口或全部 (0.0.0.0)。如果它仅绑定到本地接口,则在 /etc/sshd_config 中更改以下设置:

ListenAddress ::
ListenAddress 0.0.0.0

如果你没有看到这样的行,那么你的 sshd 没有运行:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          8627        674/sshd        
tcp6       0      0 :::22                   :::*                    LISTEN      0          8629        674/sshd        

如果是这种情况,您可以尝试使用以下命令启动它:

start ssh

答案2

在安装 openssh-server 后,您可以从自己的 PC 而不是同一网络上的其他 PC 建立 SSH 连接,这当然是不现实的(假设您没有更改默认设置,并且网络上没有任何魔法阻止连接通过)。

我要做的第一件事是检查以确保 SSH 正在监听所有以太网适配器(而不仅仅是本地主机)。您可以使用 来执行此操作netstat,使用 TCP(-t)列出正在监听(-l)的服务名称(-n)而不是数字,然后将结果传递给grep搜索:22SSH 默认监听的端口:

netstat -ntl | grep :22

您应该得到以下结果:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN 

如果您没有得到该结果,那么这可能是您的第一个问题。sudo server ssh restart我会尝试做的第一件事是检查 SSH 服务器是否确实已启动(使用 重新启动)(但您可能不是这种情况,因为您可以从本地主机连接)。我会检查的第二件事是 SSH 服务器配置是否正常。

如果这是我得到的结果,netstat那么我可以假设 SSH 服务器正在监听所有以太网适配器,这意味着来自同一网络上的其他 PC 的连接应该可以工作。

我接下来要查看的是 PC 的 IP 地址,以确保我从尝试连接的 PC 指定了正确的 IP 地址。ifconfig应该给我所需的信息。

在我的 PC 上,ifconfig显示:

eth0      Link encap:Ethernet  HWaddr 00:26:9e:e8:cf:31  
          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:42 Base address:0xc000 

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:4239 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4239 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1341552 (1.3 MB)  TX bytes:1341552 (1.3 MB)

wlan0     Link encap:Ethernet  HWaddr c4:17:fe:3c:aa:d7  
          inet addr:192.168.1.66  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::c617:feff:fe3c:aad7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:54149 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24983 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:29122251 (29.1 MB)  TX bytes:4707094 (4.7 MB)

这表明我的eth0没有 IP 地址(因为它没有连接)并且我的无线适配器wlan0有 IP 地址192.168.1.66。这是我需要用来从同一网络上的另一台 PC 连接的 IP 地址。

在另一台电脑上,假设我使用与“问题”电脑上相同的用户名登录,我将从终端连接:

ssh 192.168.1.66

还是不起作用?

接下来要尝试检查 PC 之间是否存在任何类型的网络通信。尝试从另一台 PC ping“问题”PC。如果您无法获得 ping 回复,那么这可能不是 SSH 问题,而是网络问题。

您还可以尝试另一件事...几个月前,我尝试从笔记本电脑打印到无线打印机时遇到了问题。原来是无线路由器导致了这个问题。路由器重启后,打印又恢复正常了。您尝试过重启路由器吗?

还是没有运气?

好的,现在我们在机器 A 上尝试sudo tcpdump。我们要转储所有源 IP 地址为 192.168.1.33(机器 B)且通过端口 22 进入的数据包eth0(假设您的网络适配器是eth0):

sudo tcpdump -i eth0 src host 192.168.1.33 and dst port 22

现在在机器 B 上尝试:

SSH 192.168.1.22

是否tcpdump产生任何输出?

我们也可以尝试telnet从机器 B 连接机器 A 的 22 端口:

telnet 192.168.1.22 22

这应该会产生类似这样的结果:

user@machineb:~$ telnet 192.168.1.22 22
Trying 192.168.1.22...
Connected to 192.168.1.22.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.8p1 Debian-1ubuntu3

其他计算机可以连接到机器 A 吗?

机器B可以连接到任何其他计算机吗?

答案3

tcpdump -nvvvli ethX port 22 or icmp在 Ubuntu 11.04 上执行(替换ethX为您的网络设备名称,例如eth0)。查看端口 22 (ssh) 上的连接是否命中,以及它是否正确应答 (不是 ICMP 也不是 TCP RST)。

相关内容