Raspberry Piへの公開鍵認証でのSSH接続 & VSCode Remote Developmentの設定方法
Raspberry Pi に SSH(公開鍵認証)で接続するまで & VSCode の Remote Development の設定を備忘録としてまとめます。
公開鍵認証とは?
公開鍵認証とは、パスワードの代わりに 公開鍵と秘密鍵のペアを用いる認証方法です。
詳細は以下記事をご覧ください。
キーファイルの作成
まずローカルでキーファイルを置くディレクトリを作ります(.ssh 直下に秘密鍵を置いておいても良いのですが、整理しておいたほうが後々楽なので)
mkdir ~/.ssh/raspberrypi
次にキーファイルをssh-keygen
コマンドで作成します。
$ ssh-keygen -t rsa
ここで、鍵の作成場所を聞かれるので、先ほど作成したディレクトリを指定します。
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/kawamataryou/.ssh/id_rsa):
今回は /Users/kawamataryou/.ssh/raspberrypi/id_rsa
と設定しました。
次に、パスフレーズを聞かれます。あったほうが安全なんですが、今回は省略します。
続けて Enter を押せば OK です。
Enter passphrase (empty for no passphrase):
これで.ssh/raspberrypi
配下に秘密鍵のid_rsa
と、公開鍵のid_rsa.pub
が作成されます。
そして今作成したキーペアの内、公開鍵のid_rsa.pub
を Raspberry Pi に送ります。
$ scp ~/.ssh/raspberrypi/id_rsa.pub pi@raspberrypi:~
パスワードを聞かれるので Raspberry Pi で初回ログインした際に設定したパスワードを入力してください。
Raspberry Pi側のsshの設定
ssh(Password 認証)で Raspberry Pi に接続します。
$ ssh pi@raspberrypi
次に ssh の鍵を管理する.ssh
ディレクトリを作成します。
$ sudo mkdir ~/.ssh
そして、先ほど送ったid_rsa.pub
をauthorized_keys
と名前を変更しつつ.ssh
に移動します。
$ mv ~/id_rsa.pub ~/.ssh/authorized_keys
次に.ssh
, authorized_keys
のパーミッションを変更します。
$ chmod 600 ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh
600 は-rw-------
で管理者のみ読み取り書き込みが可能、700 はxrw-------
で管理者のみ実行読み取り書き込み可能です。
これをしないと ssh 接続の時に怒られるので必ず設定しましょう。
次にssh_conf
を修正して、ssh 接続を有効にしましょう。
$ sudo vi /etc/ssh/sshd_config
以下の行のコメントアウト削除して公開鍵認証を有効化してください。
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
最後に変更内容を反映させるため sshd を再起動します。
これで Raspberry Pi 側の作業は完了です。
$ sudo /etc/init.d/ssh restart
ssh configの修正
最後にローカル側での作業です。
この段階では、Raspberry Pi の秘密鍵を、.ssh
直下に置いていないため毎回-i
オプションで keyfile を指定する必要があります。
それは面倒なので config に設定を追記します。
~/.ssh/config
を開き以下を追記します(config がなければ作成してください)。
Host raspi
HostName raspberrypi
User pi
IdentifyFile ~/.ssh/raspberrypi/id_rsa
これで以下コマンドで公開鍵認証でのssh接続ができるようになっているはずです。
$ ssh raspi
VSCode Remote Developmentでの接続
ssh で接続して、Vim で開発でも良いのですがどうせならより使い慣れたエディタで開発したいですよね。その要望を叶えるのが VSCode の Remote Development です。
まるでローカルに環境があるかのように、Raspberry Pi の内部を VSCode で開けます。
まず、VSCode に Remoete Development のエクステンションをインストールします。
インストールするとサイドバーに Remote Development のアイコンが追加されます。
アイコンをクリックするとタブが開くので、上部の REMOTE EXPLORER のセレクトボックスをSSH Targets
に設定します。
こうすると.ssh/config
で設定しているホスト一覧が出るのであとは、先ほど設定したraspi
をクリックするだけです。
クリックすると、別ウィンドウで VSCode が開き、Raspberry Pi に SSH 接続して環境を構築しはじめます。
初回は完了までしばらくかかります。
完了後、EXPLORER のタブで Open Folder をクリックしてパス を指定して OK を押せば完了です。
まるでローカルにファイルがあるかのようにディレクトリ・ファイルが閲覧出来て VSCode 上でそのまま編集できます。最高便利!
おわりに
以上「Raspberry Pi への公開鍵認証での SSH 接続 & VSCode Remote Development の設定方法」でした。
Remote Development がとても便利ですね。VSCode すごい。
Discussion
~/.ssh/config 内の
Host raspi
HostName raspberrypi
User pi
IdentifyFile ~/.ssh/raspberrypi/id_rsa
はIdentifyFile ではなくIdentityFile でしょうか。
後者にするとうまくできました。
初めてラズパイでSSHをやってみたのですが大変参考になりました。
ありがとうございます。