Ssh

SSH 7.4 在“承諾:網路”處長時間暫停

  • November 2, 2021

我有一台機器最近更新到 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=...

重新啟動,沒有更多問題。

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