なぜかラズパイへのSSH接続が不定期に切断する
通常、ラズパイを用いた開発ではSSHでWindows PCからアクセスしてるのですが、ルーターを変えてからSSHが不定期に強制切断されてTeraTermが落ちる、ということが続いています。
ネットワークが切れているだけで、HDMIでモニター出力してみると、ラズパイは生きているのですが、Windows PCからのpingが届かないような状況です。
また、ラズパイでGUIのブラウザを一度起動するとアクセスが復活する、という状況です。
TeraTermにもこのような現象に対応する機能があるようなのですが、私の状況下では効果がありませんでした。
対策
shellスクリプトで定期的に適当なところにpingを打ち続けることで解決しました。
#!/bin/bash while : do ping 172.16.80.29 -c 1 >> /dev/null sleep 30 done
これをping.sh
としてhomeに保存します。
ping
はそのまま、pingを打ちます。
パラメータの-c 1
は1回という指定です。
>> /dev/null
はそのレスポンス結果を破棄する、というものです。
これを30秒ごとにループします。
ターゲットのipアドレスはローカルで、使われていないアドレスです(DHCPだと何かが設定される可能性はありますが)。
自動起動する
これをラズパイ起動時に実行することでSSHが切れることがなくなりました。
これは常に実行したいので、ラズパイ起動時に自動起動するように設定します。
ラズパイ起動時に自動実行する方法は各種ありますが、一番簡単な方法(個人の感想です)で設定しました。
$ sudo vim /etc/rc.local
このファイルのexit 0の上に
sh /home/raspberrypi0/ping.sh
を追記します。
再起動します。
ping.sh
が起動されていれば成功です。
また、複数設定したい場合は末尾に &
を付けます。
まとめ
ラズパイでの自動実行とこれを用いてSSHが切れる対策をしました。
rainbow-engine.com
webbibouroku.com
rikoubou.hatenablog.com