解决了!该机器是 Dell Poweredge 系统,在后台运行他们所谓的 iDRAC - iDRAC 又运行一台 SSH 服务器,该服务器与我在 Debian 中安装的服务器冲突。对我来说,解决方案就是禁用 iDRAC,因为我不使用它,而且我很高兴没有这样做。我不知道这个冲突应该如何解决。
刚刚在机器上安装了 Debian Stretch。最小安装除了安装 openssh-server 和设置我的网络接口之外几乎没有做任何事情。我遇到的问题似乎与网络服务有关。
从启动开始我就无法通过 SSH 远程连接到我的服务器。服务器此时已连接互联网,我可以 ping 通它并从它处 ping 通。连接时,一开始很好,但随后弹出窗口要求用户输入密码,输入密码不起作用 - 无论如何应该已经由客户端发送了。当我跑步时systemctl 重新启动网络服务在服务器上 SSH 突然开始工作。
openssh-server 使用默认配置运行。
我的 SSH 客户端(Bitvise)日志显示:
15:08:26.493 Started a new SSH2 session.
15:08:26.493 Connecting to SSH2 server 171.xxx.xxx.xxx:22.
15:08:26.493 Connection established.
15:08:26.681 Server version: SSH-2.0-OpenSSH_5.8 <----
15:08:26.681 First key exchange started.
15:08:27.289 Received a new host key from the server. Algorithm: xxxxxxxxxxx
15:08:27.320 First key exchange completed using ecdh-sha2/nistp521. xxxxxxxxxxx
15:08:27.320 Attempting password authentication.
15:08:28.724 Authentication failed. Remaining authentication methods: 'password'.
15:08:30.581 Authentication aborted on user's request.
15:08:30.596 The SSH2 session has been terminated.
注意服务器版本SSH-2.0-OpenSSH_5.8
telnet 174.xxx.xxx.xxx 22
回应SSH-2.0-OpenSSH_5.8
在服务器上 SSH 似乎运行得很好:
systemctl status sshd.service
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2017-06-28 11:16:52 CEST; 4h 10min ago
Main PID: 598 (sshd)
Tasks: 1 (limit: 7372)
CGroup: /system.slice/ssh.service
└─ 598 /usr/sbin/sshd -D
systemd[1]: Starting OpenBSD Secure Shell server...
sshd[598]: Server listening on 0.0.0.0 port 22.
sshd[598]: Server listening on :: port 22.
systemd[1]: Started OpenBSD Secure Shell server.
Networking.service 的状态显示了这一点
systemctl status networking.service
● networking.service - Raise network interfaces
Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: enabled)
Active: active (exited) since Wed 2017-06-28 11:16:49 CEST; 4h 10min ago
Docs: man:interfaces(5)
Process: 471 ExecStart=/sbin/ifup -a --read-environment (code=exited, status=0/SUCCESS)
Process: 335 ExecStartPre=/binsh -c [ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude=lo)" ] && udevadm settle (code=exited, status=0/SUCCESS)
Main PID: 1120 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 7372)
CGroup: /system.slice/networking.service
systemd[1]: Starting Raise network interfaces...
systemd[1]: Started Raise network interfaces.
重启网络服务后
systemctl restart networking.service
运行此命令后,SSH 突然开始工作。
SSH 客户端日志显示:
15:08:57.179 Started a new SSH2 session.
15:08:57.179 Connecting to SSH2 server 171.xxx.xxx.xxx:22.
15:09:00.205 Connection established.
15:09:00.205 Server version: SSH-2.0-OpenSSH_7.4p1 Debian-10 <----
15:09:00.205 First key exchange started.
15:09:00.283 Received a new host key from the server. Algorithm: xxxxxxxxxxx
15:09:00.314 First key exchange completed using ecdh-sha2/nistp521. xxxxxxxxxxx
15:09:00.314 Attempting password authentication.
15:09:00.330 Authentication completed.
15:09:00.470 Terminal channel opened.
奇怪的是现在它显示服务器版本SSH-2.0-OpenSSH_7.4p1 Debian-10
telnet 174.xxx.xxx.xxx 22
回应SSH-2.0-OpenSSH_7.4p1 Debian-10
systemctl 状态 sshd.service显示与之前相同
网络服务的状态显示了这一点
systemctl status networking.service
● networking.service - Raise network interfaces
Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: enabled)
Active: active (exited) since Wed 2017-06-28 15:12:49 CEST; 1min 12s ago
Docs: man:interfaces(5)
Main PID: 1292 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 7372)
CGroup: /system.slice/networking.service
systemd[1]: Starting Raise network interfaces...
systemd[1]: Started Raise network interfaces.
/etc/网络/接口
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
auto eno1
iface eno1 inet static
address 174.xxx.xxx.29
netmask 255.255.255.248
gateway 174.xxx.xxx.25
broadcast 174.xxx.xxx.31
dns-nameservers 8.8.8.8 8.8.4.4
/etc/主机
127.0.0.1 localhost.localdomain localhost
127.0.1.1 boris.secnet.sec boris
/etc/主机名
boris
/etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
创建了 resolv.conf 并在其中添加了名称服务器。仅将它们放在 /etc/network/interfaces 中时遇到问题。尝试使用和不使用 resolv.conf 并在 /etc/network/interfaces 中指定它们。
NetworkManager 启用/禁用,行为没有差异。没有防火墙。服务器直接连接到互联网,我的客户端计算机也是如此。
那么,当 SSH 发生什么情况时systemctl 重新启动网络服务被调用?为什么网络服务重启前后会返回不同的 SSH 服务器版本?
为什么网络服务在启动时不执行手动重新启动时执行的操作?
我完全迷失了这个,已经测试了好几天了。在我升级之前,在相同的网络和界面设置上与 Debian Wheezy 完美配合。完全重新安装、格式化磁盘并安装 Stretch。
有谁知道问题可能是什么?或者如何排除故障。
答案1
解决了!该机器是 Dell Poweredge 系统,在后台运行他们所谓的 iDRAC - iDRAC 又运行一台 SSH 服务器,该服务器与我在 Debian 中安装的服务器冲突。对我来说,解决方案就是禁用 iDRAC,因为我不使用它,而且我很高兴没有这样做。我不知道这个冲突应该如何解决。
答案2
版本不匹配对我来说似乎很可疑。
systemctl status
非常明确,您正在成功运行/usr/sbin/sshd
。如果系统最初使用 中的非 Debian 二进制文件启动,那会很奇怪/usr/sbin/sshd
,但是一旦启动,正确的 Debian 二进制文件就可以在 中找到/usr/sbin/sshd
。
由于您坚持在这两种情况下都连接到相同的 IP 地址 :-P,因此在连接到达您的 SSH 守护程序之前,一定有东西拦截了它们。我认为这可能是服务器上一些非常混乱的“熄灯管理”,在硬件级别拦截 ssh 连接。 (例如,失败的 SSH 连接尝试不会显示在 Debian 的 中/var/log/auth.log
,甚至不会显示在 中tcpdump port ssh
)。