Debian

在手動重新啟動networking.service 之前SSH 將無法工作

  • July 19, 2017

解決了!這台機器是一個戴爾 Poweredge 系統,它在後台執行他們稱之為 iDRAC 的東西——iDRAC 又執行一個與我在 Debian 中安裝的伺服器衝突的 SSH 伺服器。對我來說,解決方案就是禁用 iDRAC,因為我不使用它,我很高興我不使用它。我不知道應該如何解決這個衝突。

剛剛在機器上安裝了 Debian Stretch。最小安裝除了安裝 openssh-server 和設置我的網路介面之外幾乎沒有做任何事情。我遇到的問題似乎與網路服務有關。

直接從引導我無法通過 SSH 遠端連接到我的伺服器。伺服器此時有網際網路連接,我可以 ping 它並從中 ping。在連接時它開始很好,但隨後彈出視窗要求使用者輸入密碼,輸入密碼不起作用 - 無論如何應該已經由客戶端發送。當我在伺服器上執行systemctl restart networking.service時,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.

network.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 status sshd.service顯示與以前相同

network.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/hosts

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 啟用/禁用,行為沒有區別。沒有防火牆。伺服器直接連接到網際網路,我的客戶端機器也是如此。

那麼,呼叫*systemctl restart network.services時 SSH 會發生什麼?*為什麼它會在網路服務重新啟動之前和之後拋出不同的 SSH 伺服器版本?

為什麼網路服務不會在啟動時手動重新啟動它時做什麼?

我完全迷失了這個,已經測試了好幾天。在我升級之前,在相同的網路和介面設置上與 Debian Wheezy 完美配合。進行了完全重新安裝,格式化了磁碟並安裝了 Stretch。

有沒有人知道問題可能是什麼?或者如何解決。

解決了!這台機器是一個戴爾 Poweredge 系統,它在後台執行他們稱之為 iDRAC 的東西——iDRAC 又執行一個與我在 Debian 中安裝的伺服器衝突的 SSH 伺服器。對我來說,解決方案就是禁用 iDRAC,因為我不使用它,我很高興我不使用它。我不知道應該如何解決這個衝突。

版本不匹配對我來說似乎很可疑。

systemctl status非常明確,您正在成功執行/usr/sbin/sshd. 如果系統最初使用 .in 中的非 Debian 二進製文件啟動會很奇怪/usr/sbin/sshd,但是一旦啟動,正確的 Debian 二進製文件就可以在/usr/sbin/sshd.

由於您堅持在兩種情況下都連接到相同的 IP 地址 :-P,因此必須在連接到達您的 SSH 守護程序之前攔截它們。我認為這很可能是伺服器上一些非常混亂的“熄燈管理”,在硬體級別攔截了 ssh 連接。(例如,失敗的 SSH 連接嘗試不會出現在 Debian 中/var/log/auth.log,甚至不會出現在 中tcpdump port ssh)。

引用自:https://unix.stackexchange.com/questions/373943