#はじめに
PCの遠隔操作方法には様々なものがありますが、
GUIでの接続を前提としたものは、RDPやVNC
CUI(コンソール)での接続を前提としたものは、今回取りあげるSSHが代表的です。
2018年以降のWindows10ではOpenSSHというSSH接続ソフトがプリインストールされ、
コマンドプロンプトで簡単に実行できるようになったので、
RaspberryPiのお手軽遠隔操作を試してみます。
なお、SSH接続には
・パスワード認証
・公開鍵認証
の2種類があるので、本記事ではその2種類での手順両方を紹介します。
(セキュリティ的には、後者の公開鍵認証がより推奨されます)
#必要なもの
・RaspberryPi本体
・上記と同じネットワークにつながったWindows10 PC
#パスワード認証の場合:手順
##①下準備
セキュリティ対策のため、こちらの記事の③「ポート番号変更」まで実行してください
##②RaspberryPiのIPアドレス確認
※この操作のみRaspberryPi側で実行します
RaspberryPiで
ifconfig
と打つと
wlan0: flags= <UP,BROADCAST,RUNNING,MULTICAST> mtu
inet 192.168.***.***以下続く
というような表示が出てきます。
このinetの右に記載されている数字がRaspberryPiのIPアドレスとなるので、
メモしておいてください(IPを固定化したい場合はこちら参照)
##③SSH接続の実行
ここからはPC側の操作です。
###OpenSSHのインストール確認
ssh
と打って、
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
[-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
[-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
[-i identity_file] [-J [user@]host[:port]] [-L address]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-Q query_option] [-R address] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] destination [command]
のような表示が出れば成功です。
'ssh'は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチファイルとして認識されていません。
と出た場合は、OpenSSHがインストールされていないので
こちらを参考にインストールしてください。
###SSH接続の実行
下記コマンドを実行します。
ssh RaspberryPiのユーザ名@RaspberryPiのIP -p SSH用のポート
RaspberryPiのユーザ名およびSSH用のポートは「①下準備」で設定した値
RaspberryPiのIPは②で確認したIPアドレスとなります。
RaspberryPiのパスワードが求められるので入力して、
[RaspberryPiのユーザ名]@raspberrypi:~ $
というようなLinuxコマンドが出てくれば成功です。
これでRaspberryPiをSSHで操作することができます。
終了したい場合は
exit
で終了できます。
以上がパスワード接続での接続法です。
#公開鍵認証の場合:手順
##①SSH公開鍵認証の確立
セキュリティ対策も兼ねて、こちらの記事の④「SSHを公開鍵認証に変更」まで実行してください
(少し長いですが、セキュリティホールを作らないためにも根気強く実施頂ければと思います)
##②認証設定の保存
上記①により公開鍵認証でのSSH接続ができますが、
ssh [RaspberryPiのユーザ名]@[RaspberryPiのIP] -i [秘密鍵のパス] -p [ポート番号]
という長いコマンドを毎回打つ必要があり、手間がかかります。
そこで、.sshフォルダにconfigファイルを作る事で、
ssh [ホスト名]
という短いコマンドでSSH接続できるようになります。
VSCodeのような開発ツールでRaspberryPi内のファイルを編集したい場合にも、
このconfigファイルが必要となるので、作っておいて損はないと思います。
###configファイルの作成
下記のようなファイルをメモ帳で作成し、「config」という名前で保存します。
保存先の.sshフォルダは、デフォルトでは
「C:\Users\[Windowsのユーザ名]\.ssh」
となります。
設定によってはテキストファイルとして保存され、
「config.txt」となりますが、この場合も名前の変更で.txt拡張子を削除すれば問題ありません。
また、ホスト名は任意で大丈夫です。
###SSH接続のテスト
下記コマンドを実行し、
ssh [ホスト名]
公開鍵認証のパスワードが求められるので入力し、
[RaspberryPiのユーザ名]@raspberrypi:~ $
というようなLinuxコマンドが出てくれば成功です。
終了したい場合は
exit
で終了できます。
以上でWindows10からRaspberryPiへのSSH接続は完了です!
お疲れさまでした!
##参考:config作成後のSSHによるファイル送信コマンド
scp [送信したいファイルのパス] [RaspberryPiのユーザ名]@[RaspberryPiのホスト名]:[送信先のパス]
で送信できます。
例(PCのD:\tmpにあるtmp.txtを、ユーザ名"piuser"、ホスト名"raspi"のRaspberryPiのホームディレクトリに送信)
scp D:\tmp\tmp.txt piuser@raspi:/home/piuser
##参考:公開鍵認証のパスワード変更方法
クライアント(上記ではWindowsPC)側で、
ssh-keygen -p
で公開鍵認証のパスワードを変更できます