LoginSignup
0
0
個人開発エンジニア応援 - 個人開発の成果や知見を共有しよう!-

Raspberry Pi Zero 2 Wに公開鍵暗号方式でSSH接続する。

Last updated at Posted at 2023-10-15

目次

1.前回のまとめ
2.Raspberry Pi Zero 2 W
3.Windows11からSSH接続(Tera Term)
4.Windows11からSSH接続(Visual Studio Code)
5.まとめ

1.前回のまとめ

houwouです。
前回の投稿でRaspberry Pi Zero 2 Wの初期設定を終えた。
今回はWindows11から公開鍵暗号方式でSSH接続を試みる。

2.Raspberry Pi Zero 2 W

まずはRaspberry Pi Zero 2 WでSSHの設定を有効にするためにLXTerminalを開く。
ターミナルの画面が表示されたら忘れずにおまじないから。

sudo apt-get update
sudo apt-get upgrade

セットアップの時にアップグレードしていたと思ったのにかなり時間がかかった。

ターミナルに下のように入力すると設定画面が表示される。

raspi-config

1. System Optionsを選択。
20231009_144239.jpg
P2 SSHを選択
20231009_144307.jpg
セキュリティーリスクについての警告が表示されるが<はい>を選択。
20231009_144329.jpg
これでSSHが有効になった。
参考:Raspberry Pi (OS)へとSSHを有効化してログインする方法

次に、Raspberry Pi Zero 2 Wのセキュリティ対策としてpiユーザーを削除する。
まずは新規ユーザー[new_user]を作成してpiと同じユーザー権限を与える。
私の場合まだファイルなんて一切ないので必要なかったかもしれないが、/home/piのフォルダをすべて/home/[new_user]にコピーする。
raspi-configから自動ログインをオフにする。
ついでにGUIはもういらないのでコンソールで起動するように設定して[new-user]でログイン。
ここまで出来たらpiユーザーを削除。
参考:買ったらまず実施!RaspberryPiのセキュリティ対策

そのままついでにIPアドレスを調べておく。

ifconfig

wlan0inetにIPアドレスが表示されているのでメモ。

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (ローカルループバック)
        RX packets 29318  bytes 7792599 (7.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 29318  bytes 7792599 (7.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.XXX.XXX  netmask 255.255.255.0  broadcast 192.168.XXX.XXX
        inet6 XXXX  prefixlen 64  scopeid 0x20<link>
        ether XXXX  txqueuelen 1000  (イーサネット)
        RX packets 1235961  bytes 1416260210 (1.3 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 443721  bytes 45834913 (43.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

3.Windows11からSSH接続(Tera Term)

準備が整ったのでRaspberry Pi Zero 2 WへのSSH接続を試みる。
Windows10の途中からOpenSSH Clientが標準機能になっているようなのでPowerShellやWindows Terminalなどを利用すれば特別なクライアントソフトなどなくてもSSH接続ができるようになっている。
でも私はバーガーパソコンにFedora Core 1をインストールして遊んでいたころから慣れ親しんでいるTera Termを利用することにした。
参考:windowsのsshクライアントはどれがいい?
[初心者向け?] Windows環境でOpenSSHクライアント(ssh.exe)を使う時に気を付けるべきこと

Tera Termをインストールしたら起動して先ほど調べたIPアドレスを入力してポート番号を確認する。
TeraTerm1.jpg
ユーザー名パスフレーズを入力してプレインパスワードを使うを選択した状態で接続。
TeraTerm2.jpg
無事に接続できた。
続いてTera Termを使って公開鍵と秘密鍵を生成する。
鍵の種類はRSA、ビット数は2048といずれもデフォルトのままで生成。
生成された公開鍵と秘密鍵をC:/User/[user-name]/.ssh/にでも保存しておく。(きっとどこでも問題ない)
参考:公開鍵暗号方式とは?初心者でもわかる公開鍵暗号方式の基礎

生成された公開鍵をRaspberry Pi Zero 2 Wにアップロードする。
普通だったらscpコマンドで行うのだろうが、Tera Termならドラッグアンドドロップで直感的にアップロードできる。
初心者にはこういう機能がうれしい。
参考:SSHでローカルファイルをアップロードの流れ

アップロードした公開鍵を/home/[new-user]/.ssh/に格納。
これで公開鍵暗号方式でSSH接続できるはずなので、再接続を試みる。
ユーザー名を入力したらパスフレーズは空白のままRSA/DSA/ECDSA/ED25519鍵を使うにチェックを入れて秘密鍵のパスを入力する。
TeraTerm3.jpg
無事に接続できた。
TeraTerm4.jpg
これでRaspberry Pi Zero 2 Wに電源以外のケーブル類を接続しなくても操作できるので、一つ煩わしさから解放された。

参考:公開鍵認証によるSSH接続 - Tera Termの使い方

4.Windows11からSSH接続(Visual Studio Code)

Tera Termも使いやすくて素晴らしいソフトなのだが、Raspberry Pi Zero 2 W上で開発を行うことを想定すると少し使いづらいのかなと思い至った。
なので開発環境として使い慣れているVisual Studio CodeからSSH接続を試みた。

まずは拡張機能のRemote - SSHをインストールする。
RemoteSSH.jpg
次にc:/Users/[user-name]/.ssh/configを新規作成し以下のように入力。

config
Host Raspberry_Pi_Zero_2_W
    HostName 192.168.XXX.XX
    User [new-user]
    Port XX
    UserKnownHostsFile /dev/null
    PreferredAuthentications publickey
    StrictHostKeyChecking no
    PasswordAuthentication no
    IdentityFile /Users/[user-name]/.ssh/[private-key]
    IdentitiesOnly yes
    LogLevel FATAL

あとは左下の><ボタンを押してRemote-SSH: Connect to Host...から先ほど作成した接続先Rasoberry_Pi_Zero_2_Wを選択する。
VSCode.jpg
ターミナルも開いて無事に接続成功。
これなら開発しやすそう。

参考:Visual Studio Code で Remote SSH する。

5.まとめ

無事に公開鍵暗号方式でRaspberry Pi Zero 2 WにSSH接続できた。
配線の煩わしさからも解放され開発環境も整ったので、次回からはいよいよサーバー構築を行っていきたい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0