Windows 10からRaspberry PiにSSH接続してみる(公開鍵認証)
はじめに
Raspberry Piを操作するのに、ディスプレイをつないでいたら面倒です。そこで、SSH接続により他のPCからRaspberry Piに接続する方法をメモしておきたいと思います。また、よりセキュアな通信を行うために、BASIC認証ではなく、公開鍵認証にて接続を行います。
1. SSHの設定(Raspberry Pi側)
sudo touch /boot/ssh
次に、[設定] -> [Raspberry Piの設定]からSSHを有効
にしておきます。
リブート後、以下のような警告メッセージが出る場合、パスワードが初期値になっているので、変更しておきましょう。
ちなみに、デフォルトでは以下のUserとPasswordになっています。
User | Password |
---|---|
pi | raspberry |
[設定] -> [Raspberry Piの設定]からパスワードの変更を行えます。
以上でRaspberry Pi側の設定は終わりです。
2. Windows 10からRaspberry PiにSSH接続する(Windows 10側)
今回は、WinSCPを使って接続してみたいと思います。 WinSCPをインストールしていない場合は、以下からダウンロード&インストール。
ホスト名にRaspberry Pi側のIPアドレス、ユーザ名とパスワードを設定し、ログインボタンをクリックします。
すると、以下のように接続できていると思います。
以上で、Windows 10側からのBASIC認証によるSSH接続は完了です。
3. 公開鍵認証でSSH接続
BASIC認証だとセキュアとは言えないので、今回は公開鍵認証でSSH接続する方法についても言及します。
Windows 10側
まず、Windows 10側で公開鍵と秘密鍵のペアを作ります。
OpenSSHを使おうと思うので、Gitがインストールされていることを前提としています。 Gitをインストールしていない場合は、以下からダウンロード&インストール。
Git Bashから、以下のコマンドを実行します。 メールアドレスについては任意の値でOKです。
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
保存先やパスワードの入力を求められますが、何も入力せずにEnterします。
すると、C:\Users\ユーザ名\.ssh
直下に
* id_sra (秘密鍵)
* id_rsa.pub (公開鍵)
が作成されます。
WinSCPで公開鍵であるid_rsa.pub
をRaspberry Pi側に転送しておきます。
Raspberry Pi側
先ほど転送した公開鍵をRaspberry Pi側に登録します。
# ホームディレクトリへ移動 cd /home/pi # 公開鍵をRaspberry Pi側に登録 mkdir .ssh cat id_rsa.pub >> .ssh/authorized_keys # 権限を設定 chmod 700 .ssh chmod 600 .ssh/authorized_keys
SSHの設定ファイルを開きたいのですが、nanoやVimでもいいのですが、編集しやすいVSCodeを使います。まず、VSCodeをインストールしておきます。
# VSCodeのインストール wget -O - https://code.headmelted.com/installers/apt.sh | sudo bash # VSCodeの実行 code-oss
次に、SSH設定ファイルを開きます。
# 一時的に権限を変更 sudo chmod 666 /etc/ssh/sshd_config # VSCodeで開く code-oss /etc/ssh/sshd_config
(1) 公開鍵認証の設定
以下の2つについて、コメントアウトしているのは解除し、PubKeyAuthentication
をyes
に書き換えます。
PubkeyAuthentication yes
# Expect .ssh/authorized_keys2 to be disregarded by default in future. AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
(2) BASIC認証をできないようにする
コメントアウトしているのは解除し、PasswordAuthentication
をno
に書き換えます。
# To disable tunneled clear text passwords, change to no here! PasswordAuthentication no
(3) Rootログインをできないようにする
コメントアウトしているのは解除し、PermitRootLogin
をno
に書き換えます。
PermitRootLogin no
SSHを再起動し、上記の設定を反映させます。
# 権限をもとに戻す sudo chmod 644 /etc/ssh/sshd_config # SSHの再起動 sudo /etc/init.d/ssh restart
Raspberry Pi側の作業を以上で終了です。
最後に、WinSCPで秘密鍵を設定し、Raspberry Piに接続できるかどうか確認して見ましょう。 設定をクリックします。
SSHの認証から、秘密鍵を設定します。ppkしか対応していないと言われるので、素直にppkファイルに変換します。
設定を保存し、ログインします。公開鍵認証がうまく行っていれば、以下のようにSSH接続できているはずです。
参考
Raspberry Piに公開鍵認証を使ってssh接続する
https://tool-lab.com/2013/11/raspi-key-authentication-over-ssh/
[wip] Raspberry Piのセキュリティを高めてみた
https://qiita.com/yyano/items/126cff2e3c49b0006c43