Sshd
systemctl 無法重啟 sshd
奇怪的事情發生了:
通過 systemctl 我無法啟動 SSHD:
SERVER:~ # systemctl status sshd ● sshd.service - OpenSSH Daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: disabled) Active: inactive (dead) May 29 18:31:38 linux-uw9h systemd[1]: Stopped OpenSSH Daemon. May 29 18:45:19 SERVER systemd[1]: Stopped OpenSSH Daemon. May 29 18:48:09 SERVER systemd[1]: Stopped OpenSSH Daemon. May 29 19:04:23 SERVER systemd[1]: Stopped OpenSSH Daemon. May 29 19:09:51 SERVER systemd[1]: Stopped OpenSSH Daemon. May 29 19:11:22 SERVER systemd[1]: Stopped OpenSSH Daemon. May 29 19:12:53 SERVER systemd[1]: Stopped OpenSSH Daemon. May 29 19:13:58 SERVER systemd[1]: Stopped OpenSSH Daemon. May 29 19:15:09 SERVER systemd[1]: Stopped OpenSSH Daemon. May 29 19:24:41 SERVER systemd[1]: Stopped OpenSSH Daemon. SERVER:~ # SERVER:~ # systemctl restart sshd
…它只是掛起
但是如果我手動輸入“/usr/sbin/sshd”,它就會開始很棒!
Q:如何調試這個問題?
SERVER:~ # rpm -qf /usr/sbin/sshd openssh-7.2p2-74.16.3.x86_64 SERVER:~ # rpm -V openssh-7.2p2-74.16.3.x86_64 SERVER:~ # echo $? 0 SERVER:~ #
- dmesg 沒什麼特別的
- /var/log/* 沒什麼特別的
- journalctl -xe 沒什麼特別的
- -f openssh 中的 zypper 沒有幫助
- 沒有 FS 開啟 100%
- 控制台不顯示硬體問題
- 已經重啟了兩次
- 網路/IP 看起來不錯,如果 SSHD 執行,則可以正常工作。
- 嘗試“systemctl disable sshd”並啟用它,但沒有幫助。
就像 systemctl 無法啟動它,但手動我可以..
SLES 12.3。
2019 年 5 月 30 日更新:
sshd.service 文件的 cksum 與其他工作節點上的相同:
SERVER:~ # cat /usr/lib/systemd/system/sshd.service [Unit] Description=OpenSSH Daemon After=network.target [Service] Type=notify EnvironmentFile=-/etc/sysconfig/ssh ExecStartPre=/usr/sbin/sshd-gen-keys-start ExecStartPre=/usr/sbin/sshd -t $SSHD_OPTS ExecStart=/usr/sbin/sshd -D $SSHD_OPTS ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=always TasksMax=infinity [Install] WantedBy=multi-user.target SERVER:~ # ls -lah /usr/lib/systemd/system/sshd.service -rw-r--r-- 1 root root 361 Jan 30 15:46 /usr/lib/systemd/system/sshd.service SERVER:~ #
在最壞的情況下,我將不得不每分鐘放置一個 cronjob 來檢查 sshd,所以如果 systemctl 不能,它會啟動它。
2019 年 5 月 31 日更新:
SERVER:~ # strace systemctl restart sshd execve("/usr/bin/systemctl", ["systemctl", "restart", "sshd"], [/* 57 vars */]) = 0 brk(0) = 0x562494677000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=102550, ...}) = 0 ... recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"l\4\1\1H\0\0\0\3\0\0\0\206\0\0\0\1\1o\0!\0\0\0", 24}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) = 24 recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"/org/freedesktop/systemd1/job/22"..., 200}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) = 200 recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"l\2\1\0012\0\0\0\4\0\0\0\17\0\0\0\5\1u\0\2\0\0\0", 24}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) = 24 recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\10\1g\0\1o\0\0-\0\0\0/org/freedesktop/sys"..., 58}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) = 58 sendmsg(3, {msg_name(0)=NULL, msg_iov(2)=[{"l\1\4\0019\0\0\0\3\0\0\0\240\0\0\0\1\1o\0-\0\0\0/org/fre"..., 176}, {"\35\0\0\0org.freedesktop.systemd1.Uni"..., 57}], msg_controllen=0, msg_flags=0}, MSG_DONTWAIT|MSG_NOSIGNAL) = 233 recvmsg(3, 0x7ffc4c442360, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) = -1 EAGAIN (Resource temporarily unavailable) ppoll([{fd=3, events=POLLIN}], 1, {24, 999977000}, NULL, 8) = 1 ([{fd=3, revents=POLLIN}], left {24, 999901280}) recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"l\2\1\1\10\0\0\0\5\0\0\0\17\0\0\0\5\1u\0\3\0\0\0", 24}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) = 24 recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\10\1g\0\1v\0\0\1b\0\0\0\0\0\0", 16}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) = 16 recvmsg(3, 0x7ffc4c442410, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) = -1 EAGAIN (Resource temporarily unavailable) ppoll([{fd=3, events=POLLIN}], 1, NULL, NULL, 8
它只是掛在這裡..幾個小時後按CTRL + C’ed。sshd 不是通過 systemctl 啟動的,只能手動啟動,奇怪
您可以嘗試使用自己編寫的
sshd.service
文件對其進行測試,將其放入/etc/systemd/system
並呼叫它my-ssh.service
並使用此內容# /usr/lib/systemd/system/sshd.service [Unit] Description=OpenSSH server daemon After=network.target [Service] Type=notify #EnvironmentFile=-/etc/sysconfig/sshd #ExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY ExecStart=/usr/sbin/sshd -Dd ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target
我從我的一個 Fedora 站獲取了上述服務,並替換了 ExecStart 並添加
-d
了調試。創建一個名為/etc/systemd/system/my-ssh.service
並將上面的程式碼片段放入其中並重新載入 systemd 的文件systemctl daemon-reload
然後嘗試執行服務
systemctl start my-ssh ; journalctl -f --unit=my-ssh
並查找日誌
journalctl -f --unit=my-ssh