🍝

VSCode Remote Developmentでラズパイにssh接続 & root取得

2021/12/17に公開約1,900字

Qiita 「Visual Studio Code Advent Calendar 2021」 18日目の記事です。

https://qiita.com/advent-calendar/2021/vscode

注意

やりたいこと

  • RaspberryPi上のAWS IoT Greengrassのログを確認する為に毎回ターミナルからコマンドを打つのが面倒なので、VSCodeで直接みれるといいなぁと思った
  • Greengrassのログがrootでないと見れないところにあるので、普通にsshで接続すると権限がないので、VSCodeのエクスプローラーにも表示できない
  • 毎回コンソールからsudo suして、tailとかvimでログファイル見るのはツラい

結果:VSCodeでGreengrassのログを直接見れました

VSCodeのRemote DevelopmentのSSH機能で、RemoteCommandが解禁されていたので、できました。

必要なVSCodeの拡張機能

  • Remote - SSH と Remote - SSH: Editing Configuration Filesv0.71 以上で導入

拡張機能の設定

VSCodeのsetting.jsonで下記の設定を入れる。

"remote.ssh.useLocalServer": true,
"remote.SSH.enableRemoteCommand": true,

OpenSSHの設定

.ssh/configに下記のような感じで設定する。

  • RemoteCommandにコマンドを書いて、rootを取りにいく
  • RequestTTYtrueにしないとsudoができない
Host pi_su
  HostName raspberrypi.local
  User pi
  StrictHostKeyChecking no
  RemoteCommand sudo su -
  RequestTTY true

あとは接続すればOK

  • リモートエクスプローラーで、.ssh/config から接続先を選択

    • パスワードを聞かれたら入力する

  • しばらく待つとsshでラズパイにログインできるので、エクスプローラーで開きたいフォルダを開く

    • /にしておけば全部見れる

  • ラズパイ内のファイルがVSCodeで見れる!

    • 編集もできる!
    • root権限が必要なGreengrassのログも見れる!
    • もちろんコマンドも打てる!

結論

物凄く便利!

参考

https://github.com/microsoft/vscode-remote-release/issues/4474

Discussion

ログインするとコメントできます