古いIntelNUCをサブPCとして使っているのですが最近ssh接続が勝手に切れてハングアップするという挙動が起きていました。
こんな感じでpingで監視しててもいきなりタイムアウトして繋がらなくなります。
192.168.0.29がUbuntuのIPです。
古い筐体だし新しいOSとの相性が悪いのか?とも思います。
192.168.0.29 からの応答: バイト数 =32 時間 =1ms TTL=64 192.168.0.29 からの応答: バイト数 =32 時間 <1ms TTL=64 192.168.0.29 からの応答: バイト数 =32 時間 =1ms TTL=64 192.168.0.29 からの応答: バイト数 =32 時間 <1ms TTL=64 192.168.0.29 からの応答: バイト数 =32 時間 <1ms TTL=64 192.168.0.29 からの応答: バイト数 =32 時間 <1ms TTL=64 192.168.0.29 からの応答: バイト数 =32 時間 <1ms TTL=64 192.168.0.29 からの応答: バイト数 =32 時間 <1ms TTL=64 192.168.0.29 からの応答: バイト数 =32 時間 =1ms TTL=64 192.168.0.29 からの応答: バイト数 =32 時間 <1ms TTL=64 要求がタイムアウトしました。 要求がタイムアウトしました。 192.168.0.38 からの応答: 宛先ホストに到達できません。 192.168.0.38 からの応答: 宛先ホストに到達できません。 192.168.0.38 からの応答: 宛先ホストに到達できません。 要求がタイムアウトしました。 192.168.0.38 からの応答: 宛先ホストに到達できません。 192.168.0.38 からの応答: 宛先ホストに到達できません。 192.168.0.38 からの応答: 宛先ホストに到達できません。 192.168.0.38 からの応答: 宛先ホストに到達できません。 192.168.0.38 からの応答: 宛先ホストに到達できません。
サブ機なので大した問題ではないのですが、こうなると強制リブートするしかないので気軽に使えないのは困ります。 というわけで事象解決させました。
筐体情報
ハードウェアはこんな感じ。
❯ neofetch --off masashi@ubuntu-nuc6cays ----------------------- OS: Ubuntu 24.04.3 LTS x86_64 Host: NUC6CAYS J26847-405 Kernel: 6.8.0-88-generic Uptime: 20 hours, 50 mins Packages: 2689 (dpkg), 40 (snap) Shell: zsh 5.9 Resolution: 1280x1024 Terminal: /dev/pts/2 CPU: Intel Celeron J3455 (4) @ 2.300GHz GPU: Intel HD Graphics 500 Memory: 1673MiB / 7274MiB
切り分け
過去にディスプレイのスイッチャーを使って操作時に切り替えていたのですが切り替えるとこれまたOSがハングするんですよね。
色々調べるとNUCのHDMI端子は結構トラブルが多いらしくてスイッチャーはやめてリモートアクセスのみにしました。
しばらくは問題なかったのですが最近sshもハングするようになってしまいました。困った。
とりあえず再起動後少しの時間アクセスできるので溜まっていたパッケージのアップグレードを実施。解消せず。
dmesg, /var/log/kern.log, /var/log/syslog系のログを見ても怪しいもの無し。
この辺も怪しいですよね。
結果違ったのですが、OSのアップグレードも考えました。
https://www.reddit.com/r/Ubuntu/comments/1dbt03y/ubuntu_2404_lts_freezes_randomly_sometimes/?tl=ja
切り分けのため久しぶりにディスプレイにつなぎました。
画面は取ってませんがこれだと普通に起動OKでGUIのGNOMEもログインできるしハングアップする様子もありません。
OSの調子が悪いわけじゃなくリモートアクセス系のトラブルかなと思い、以下の記事にたどり着きました。
OSバージョンは違いますが事象が似ています。
なので修正してみることにしました。
sshd_conf修正
記事の通りTCPKeepAliveとClientAliveIntervalをコメントアウトしてsshd再起動。
❯ grep -iE 'tcpkeep|clientaliveinter' /etc/ssh/sshd_config TCPKeepAlive yes ClientAliveInterval 100
セッション維持系のパラメータですね。
解消
pingまでタイムアウトになっていたのは原因不明ですが、今のところsshのハングはなくなり安定して接続できてます。(というか繋ぎっぱなしですが)
キャプチャで見るとキープアライブはわかりませんが100秒おきに通信が発生しておりこれがClientAliveのパケットですね。

複合化して中身見てみたかったのですがsshの複合化は少し大変そうなので今回は割愛。
とりあえず直ってよかった。