どうも、白夜霧(@KiRi_Byakuya)です。
今回は、Raspberry Pi(通称:ラズパイ)のSSH接続方法の覚書です。
目次
Raspberry Pi(ラズパイ)でSSH接続をしてリモートアクセスする方法
本記事では一番ポピュラーな方法として、Tera Termを使ったSSH接続方法を記載します。
ココに注意
- 本記事では、既にラズパイがネットワークに接続できる状態であることを前提に説明します。
- 公式の「Raspberry Pi Imager」を使えば、OSをSDに書き込む時点でWiFiの設定が可能なのでオススメです。
Raspberry Pi(ラズパイ)のSSH接続で準備するもの
今回の記事で準備するものは主に下記の2つ。
- Raspberry Pi
- Tera Term
私の環境は以下の通りです。
- Windows 11 Home
- Raspberry Pi 3以上
ラズパイのIPアドレスを確認する方法は?
ラズパイとSSH接続する際、必ずIPアドレスの確認が必要になります。IPアドレスの確認は下記を参考にして下さい。
【2023年版】ラズパイで固定IPアドレスを設定する方法
Raspberry PI(ラズパイ)のIPアドレスを固定する方法の覚書
続きを見る
Raspberry Pi(ラズパイ)のSSH接続を有効にする
「Raspberry Pi Imager」でSSH接続を有効にする方法
公式からDLできる「Raspberry Pi Imager」でOSをストレージに書き込む段階から、SSH接続を有効に出来ます。
Imagerを起動して、右下の歯車アイコンをクリック。
「詳細な設定」の『SSHを有効化する』にチェックを入れておけば、初期状態からSSH接続が有効になります。
「ラズパイ」のデスクトップ画面からでSSH接続を有効にする方法
デスクトップ画面の左上のスタートメニュー→「Preferences(環境設定)」→「Raspberry Pi Configuration(Raspberry Piの設定)」をクリック
「Interfaces(インターフェイス)」のSSHを有効にして「OK」を押せば有効になります。
ターミナル(端末)からでSSH接続を有効にする方法
下記コマンドを実行して、設定画面「Raspberry Pi Software Configuration Tool」を開く。
sudo raspi-config
「3 Interface Options」を選択してEnter。
「12 SSH」を選択してEnter。
「... SSH is enabled!」という画面から「Yes」選択してEnter。
「The SSH Server is enabled」が表示されたら、SSHの有効化が完了。
Tera Term(テラターム)のインストール方法
Tera Termをダウンロード
最新版のダウンロードはコチラから可能。現時点では4.106が最新。
セットアップに使用する言語の選択
ダウンロードしたexeファイルを実行。実行すると言語の選択が表示されるので、任意の言語を選択して下さい。※日本で問題なし。
使用許諾契約書の同意
「同意する」で次へ
インストール先の指定
特に理由がなければ、デフォルトのままで次へ。
コンポーネントの選択
基本的にはデフォルトのままでOK。次へ。
言語の選択
任意の言語を選択して次へ。
プログラムグループの指定
デフォルトのまま次へ。
追加タスクの選択
基本的にはデフォルトのままでOK。次へ。
インストール準備完了
「インストール」をクリックして実行。
下記画面が表示されれば、インストールは完了です。
Tera TermでRaspberry Pi(ラズパイ)とパスフレーズ(IDとパスワード)でSSH接続する方法
Tera Term:新しい接続
Tera Termを起動させてTCP/IPを選択→「ホスト」の部分にラズパイのIPアドレスを入力。その他設定は基本的にはデフォルトのままでOK。
- ホスト:ラズパイに割り当てられているIPアドレス
- サービス:SSH
- TCPポート:22
- SSHバージョン:SSH2
- IPバージョン:AUTO
SSH認証
「ユーザー名」と「パスワード」に、ラズパイにログインするために設定した「ユーザーID」と「パスワード」をそのまま入力して「OK」を押す。
接続成功
下記画像のような表示になれば、ラズパイとのSSH接続は成功です。
Tera TermでRaspberry Pi(ラズパイ)と秘密鍵と公開鍵でSSH接続する方法
公開鍵と秘密鍵を作成する
「コマンドプロンプト」または「PowerShell」を起動して下記を実行。
ssh-keygen -t rsa -b 4096
上記コマンドを実行すると、対話型で入力が求められます。
ココがポイント
- ① 作成する公開鍵と秘密鍵の保存場所とファイル名 ※入力なしのEnterでOK
- ② パスフレーズ
- ③ ②と同じパスフレーズ
作成した公開鍵と秘密鍵はデフォルトで「PC > Cドライブ > ユーザー名 > .ssh」に保存されます。「id_rsa」が秘密鍵。「id_rsa.pub」が公開鍵です。
さらに詳しく
- 「ssh-keygen.exe」はWindows 10以上で標準で対応しています。
- 今回はRSA鍵を作成していますが、 セキュリティの高いEd25519鍵など、他の鍵についてはこちらの記事を参考にさせて頂きましたm(_ _)m
「ssh-keygen」のオプション設定は下記を参照。
Git Bashで公開鍵と秘密鍵を作成する場合は、下記記事を参考にしてください。
【メモ】TortoiseGitからGithubにプッシュ(Push)する手順と方法【画像付き】
TortoiseGitからGithubへPushをする際の自分用覚書。
続きを見る
公開鍵をラズパイへ転送する
WindowsからSCPコマンドでファイルをコピーする場合は、公開鍵(id_rsa.pub)があるフォルダへ移動→右クリック→「ターミナルで開く」を選択。
こうすることで「.ssh」へ移動した状態でターミナルが開きます。
ターミナル(PowerShell)に下記SCPコマンドを実行します。
scp [コピーするファイル名] [ラズパイのユーザー名]@[ラズパイのIP]:[転送先のラズパイのディレクトリパス]
私の環境の場合、下記のようになります。
scp id_rsa.pub kiri@192.168.0.9:~
kiri@192.168.0.9's password:
id_rsa.pub 100% 748 365.4KB/s 00:00
任意のフォルダへコピーするのが一番てっとり速いですが、アクセス権限の問題(Permission denied)が面倒なので、現状では一旦ホームディレクトリへコピーしています。
ココに注意
初回ログインの場合、下記ような接続確認が表示されます。yesと入力してEnterを押せば次回からは表示されません。
The authenticity of host '192.168.0.9 (192.168.0.9)' can't be established.
ED25519 key fingerprint is SHA256: (省略).
Are you sure you want to continue connecting (yes/no/[fingerprint])?
Please type 'yes', 'no' or the fingerprint:
次にラズパイにコピーした公開鍵を、ホームディレクトリから「.ssh」フォルダを作成して移動させます。
sudo mkdir .ssh
sudo mv id_rsa.pub .ssh
移動させた公開鍵の名前を「authorized_keys」に変更。
cd .ssh
sudo mv id_rsa_pi.pub authorized_keys
設定ファイルを「公開鍵での接続許可」に書き換える
設定ファイル「sshd_config」を開く。
sudo nano /etc/ssh/sshd_config
「AuthorizedKeysFile」をコメントを解除して公開鍵認証を有効にします。
# 下記のコメントを化を公開鍵による接続を有効にする
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
編集したファイルを保存して、一旦ラズパイを再起動。
sudo reboot
公開鍵認証でSSH接続する
Tera Termで公開鍵を使ってSSH接続します。ログイン操作はパスフレーズ接続と同じ画面で行います。
基本的にはパスワード接続と同じです。違うのは「パスフレーズ」には秘密鍵を作成する際に入力したパスフレーズを入力。
かつ、認証方式は「RSA/DSA/ECDSA/ED25519鍵を使う」を選択して、作成した秘密鍵を選択して「OK」を押す。
ログインが成功すれば、パスフレーズ接続した時と同じ状態になります。これで秘密鍵と公開鍵によるログインの設定はとりあえず完了です。
SSH接続の設定を変更してセキュリティを向上させる
ここから記載する内容は、公開鍵でログインできることを確認できた後に設定して下さい。
パスフレーズ(パスワード)接続を無効化する
セキュリティを上げるためにパスワードによる接続を無効化します。
設定ファイル「sshd_config」の「PasswordAuthentication」をnoに書き換えることでパスワード接続は無効化出来ます。
# パスワード接続を無効化
PasswordAuthentication no
公開鍵のアクセス権限(パーミッション)を変更
現状のままだと鍵に誰だれでもアクセス可能な状態です。鍵を保存しているフォルダと鍵データの権限を変更します。
sudo chmod 700 .ssh
sudo chmod 600 .ssh/authorized_keys
- 700:管理者のみ「実行」「読み取り」「書き込み」が可能。
- 600:管理者のみ「読み取り」「書き込み」が可能。
rootアカウント(管理者)でのSSH接続によるログインの無効化
rootアカウントでSSH接続出来ないように無効化します。
# rootアカウントによるSSH接続を無効化
PermitRootLogin no
SSH接続するポート番号を変更する
SSHで接続するポート番号をデフォルトの22から別の番号に変更します。変更可能範囲は0~65535。一般的には1024以上の番号が推奨されています。
# SSHで接続するポート番号を変更
Port 12345
参考になったらポッチとお願いしますm(_ _)m