急に繋がらなくなって大変でした。 問題は、KernelとOSのバージョンアップによりbit数不整合とRemote-SSHのバージョンアップにより発生しました。 悪戦苦闘の末何とか原因が分かりSSH通信が復活しましたので、一人でも何方かのお役に立てたらと思い書きました。
私の場合これで直りました。
- /boot/config.txtをarm_64bit=0にする
- .vscode-serverディレクトリを削除する
/boot/config.txtをarm_64bit=0にする
Raspberry Piの既存のOSを64bitにしたかったので、まずKernelだけ64bitにUpgradeできたのですが、OSは64bitに出来ず、Kerner=64bit, OS=32bitの状態になっていました。 VScodeのRemote-SSHはRaspberry Pi内にSSH serverをnodeで作るようで、このbit数の不整合により、node:not foundとなり、接続できていないような感じです。 VScodeは上記の様な特殊なやり方で接続しますが、TeraTermははRaspberry Piの標準のSSHを使うので接続出来てたので、TeraTermでRaspberry PiのKernelを確認します。
Kernelを確認
aarch64だと64bitです。armv7lだと32bitです。
uname -a //Linux raspberrypi 5.10.92-v8+ #1514 SMP PREEMPT Mon Jan 17 17:39:38 GMT 2022 aarch64 GNU/Linux
OSのbit数を確認
getconf LONG_BIT
返ってきた数字がOSのbit数です。 Kernelがaarch64でLONG_BITが32となってたら、/boot/config.txtのarm_64bit=1を下の様にarm_64bit=0書きなおします。 (*私はいつも簡単なnanoエディタを使っています。)
/boot/config.txtファイルを変更する場合、/boot内なので、sudoが必要です。
sudo nano /boot/config.txt
.vscode-serverディレクトリを削除する
私の場合、~/.vscode-serverなので、以下の様にして.vscode-serverディレクトリを消しました。
KernelとOSのbit数が同じでも/.vscode-serverを消すとSSH通信できたという記事も何件もありましたので一度やってみるのがいいと思います。
rm ~/.vscode-server -rf
Raspberry Piを再起動
arm_64bit=0を有効にする為に再起動します。
sudo reboot -f
再起動したら、またuname -aでKernelがOSと同じ32bitになっているか確認です。
これでVScodeでRaspberry PとRemote-SSH通信をすると繋がりました。
おまけ
上記の様に、KernelとOSのbit数が違っていても、SSH multihopは問題なく通信していました。 多分、この時は、Raspberry PiのSSHを使ってPort Forwardして、KernelとOSの不整合がないXserverにつながっているのだと思います。 しかし、Xserverに.vscode-serverのディレクトリが見つからないのはなんでかなぁ。
Windows10 VScode–> Raspberry Pi (aarch64, 32bit OS)–> Xserver
また、Raspberry Piのbit数の不整合があっても、先週まではVScodeからSSH通信していました。 先週までは、extensionsがXHR failedで更新できてませんでした。 VScodeにProxy設定を入れたらextensionsが更新できるようになり喜んでいました。 その矢先、今度はこの問題解決に1日かかりました。 多分、Remote-SSHがバージョンアップしてこの問題になったのだのかなぁと思っています。
一人でも何方かのお役に立てれれば幸いです。
コメント