在手動重新啟動networking.service 之前SSH 將無法工作
解決了!這台機器是一個戴爾 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
)。