SSH 7.4 在“承諾:網路”處長時間暫停
我有一台機器最近更新到 Fedora 25,執行 openSSH 7.4。從那時起,在 LAN 上通過 ssh 登錄需要 25-30 秒,而通常不超過 1 秒。
執行客戶端
-vvv
,使用公鑰認證,暫停發生在這裡。debug1: Authentication succeeded (publickey). Authenticated to crystalline.kodiak ([192.168.0.22]:127). debug1: channel 0: new [client-session] debug3: ssh_session2_open: channel_new: 0 debug2: channel 0: send open debug3: send packet: type 90 debug1: Requesting no-more-sessions@openssh.com debug3: send packet: type 80 debug1: Entering interactive session. debug1: pledge: network
這看起來與同一網路上沒有任何問題的其他(Fedora 23、openSSH 7.2)機器的輸出相同。
在登錄期間在伺服器端觀看頂部,
systemd
在暫停開始時短暫地爆發 - 幾秒鐘,在其他機器上並不明顯。之後系統完全空閒。同樣,客戶端也沒有異常活動。登錄後一切正常。
我用 Wireshark 觀察了客戶端的交換,在暫停期間沒有交換數據包。客戶端和伺服器通過路由器位於乙太網上,因此我還可以查看伺服器地址是否有任何流量。沒有任何事情發生。
這是
sshd_config
:Port 127 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key IgnoreRhosts yes SyslogFacility AUTHPRIV LogLevel INFO TCPKeepAlive yes ClientAliveInterval 120 ClientAliveCountMax 15 PermitRootLogin yes StrictModes yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication no ChallengeResponseAuthentication no KerberosAuthentication no GSSAPIAuthentication no UsePAM yes X11Forwarding no UsePrivilegeSeparation sandbox AcceptEnv LANG LC_* Subsystem sftp /usr/libexec/openssh/sftp-server
根據佐藤桂在評論中的建議,我嘗試過
UseDNS no
; 這沒有任何區別。
事實證明,這是非常極端的情況。
該機器是 Raspberry Pi,執行股票 Pi 核心,但具有通用 armhf Fedora 25 使用者空間。它也是無頭設置的,從未使用過,但是當插入顯示器和鍵盤時,
systemd-logind.service
. 我將其追溯到這個問題,該問題是在去年 systemd 的核心部分依賴於seccomp時引入的,無論出於何種原因,它都沒有包含在股票 Pi 核心中,但可能是由於配置錯誤,看起來確實如此。解決方案相當簡單;需要刪除需要 seccomp 的服務文件選項。其中有一些
/usr/lib/systemd/system
,包括systemd-logind.service
.它也可能會在庫存系統上禁用網路,但我為此使用我自己的服務並且沒有受到影響(即,其他人以這種方式遇到這個問題的機會很小)。
無論如何,我在所有這些中註釋掉了以下幾行:
MemoryDenyWriteExecute=yes SystemCallFilter=...
重新啟動,沒有更多問題。