🚀

初めてのラズパイサーバ構築 MacからSSH接続する方法【Part2】

に公開

はじめに

前回の記事『初めてのラズパイサーバ構築 MacからSSH接続する方法【Part1】』https://qiita.com/mabo23/items/8ab5b4cd3ee40995782b では、Macからラズパイにアクセスするために必要な設定手順を実体験に基づき解説しました。その際、

ssh ubuntu@192.168.0.23

と入力することで接続することができたことを解説しましたが、ログインの都度毎回~ @IPアドレスを入力するのは大変です。

そこで、自分が設定したホスト名でアクセスできればもっと楽になると思い、調べたところ、自分で設定できることがわかったので、ここでその方法についてシェアしていきます。

今回の記事では、Macからラズパイに簡単にSSH接続するようにするための方法を解説していきます。

ラズパイを使用する目的

実際の開発環境で、リモートSSHでサーバーにアクセスできるようになるための練習です。

私は現在、バックエンドエンジニアを目指していますが、実務未経験です。
実際の業務を調べる中で、サーバーにアクセスしてファイル操作をする機会が多いとわかったため、事前にその練習をする目的でラズパイをサーバーに見立ててセットアップを行なっております。

簡単にリモートログインするための設定手順

実際に以下の手順で行ないました。

  1. ssh-keygenによりMacで鍵ペア(秘密鍵・公開鍵)を作る
  2. SSH設定ファイルにHost設定を書く(Mac側)

それぞれ見ていきましょう!

1. Macで鍵ペア(秘密鍵・公開鍵)を作る

1-1. Macのターミナルを開く

1-2. 鍵ペアを作成するコマンドを実行

MacからパスワードなしでSSH接続するために、公開鍵と秘密鍵を生成します。
ラズパイなどのサーバーに、安全に・パスワードなしでログインできるようにするための準備です。

秘密鍵・公開鍵を作成するコマンド
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_raspi

https://qiita.com/kazokmr/items/754169cfa996b24fcbf5 を参考に
※ファイル名は自由に決められますが、id_rsa_raspi のようにわかりやすくするのが推奨されています。

1-3. パスフレーズの設定

パスフレーズを設定すると、秘密鍵ファイルそのものが暗号化されます。
つまり、「誰かが秘密鍵ファイルを盗んでも、パスフレーズがなければ使えない」状態になります。

コマンド実行後の出力
Enter passphrase (empty for no passphrase):

上記のようなメッセージが出力されたら、パスフレーズを入力しましょう!
セキュリティの観点から万が一ファイルを盗まれたときに誰でも使うことができてしまうため、パスフレーズを設定することが推奨されます。
これにより、秘密鍵を使うときにはパスフレーズを必要になるため、第三者による利用を未然に防ぐことができます。

1-4. 鍵ファイルの生成

これにより以下の2つのファイルが作成されます

  • ~/.ssh/id_rsa_raspi(秘密鍵)
  • ~/.ssh/id_rsa_raspi.pub(公開鍵)

"秘密鍵・公開鍵を作成するコマンド"で指定したファイルパスに秘密鍵が格納され、その末尾に.pubがついたファイルパスに公開鍵が格納されます。

1-5. 公開鍵をラズパイに登録

鍵を作っただけでは接続できません。
次に以下のコマンドで、ラズパイに公開鍵を登録します。

ssh-copy-id -i ~/.ssh/id_rsa_raspi.pub ubuntu@192.168.0.23

ssh-copy-idコマンドを実行すると、リモートのラズパイ(または接続先サーバー)の~/.ssh/authorized_keys ファイルがなければ自動的に作成されます。そして、指定した公開鍵ファイル(ここでは ~/.ssh/id_rsa_raspi.pub の中身)が authorized_keys ファイルに追記されます。
これにより、Macの秘密鍵を使ったパスワードなしのSSH接続が可能になります。

2. SSH設定ファイルにHost設定を書く(Mac側)

「Host設定」とは、MacのSSH設定ファイル(~/.ssh/config)に記述する接続先のニックネーム(エイリアス)です。

Host raspi                # ホストのニックネーム(任意の名前)
  HostName 192.168.0.23   # ラズパイのIPアドレス
  User mabo               # ラズパイのSSHユーザー名
  IdentityFile ~/.ssh/id_rsa_raspi  # 秘密鍵のファイルパス(Mac側)

これにより、IPアドレスやユーザー名を毎回入力せずに、短い名前でSSH接続できるようになります。
この設定を書くことによって、以下のように簡単にSSH接続できます。

SSH接続時のコマンド
ssh raspi

各キーワードと役割まとめ

キーワード 意味・役割 書き方のポイント・例
Host この設定に付けるエイリアス名(ニックネーム)
ssh raspi のように使う名前
自由に決めてよい(スペースは不可)
例: myserver, raspi, workpc など
HostName 実際に接続するリモートサーバのIPアドレスまたはドメイン名 IPアドレス例: 192.168.1.100
ドメイン例: example.com
User SSH接続時のユーザー名
通常はリモートのログインユーザー
例: ubuntu, pi, root, ec2-user など
IdentityFile SSH接続で使う秘密鍵ファイルのパス
パスワード認証でなければ指定する
絶対パスまたは~でホームディレクトリを表現
例: ~/.ssh/id_rsa_ubuntu

実際にラズパイにファイルを転送した結果

動作確認のため、ポートフォリオの一つをラズパイに送信し、ログインして実行しました。

scp -r ~/project/backend-portfolio/01_guess_the_number_game mavot@192.168.0.23:/home/ubuntu/

ファイル転送成功!
さらに、送信したファイルが実際に実行できるか試したところ、正常に実行できました。

まとめ

今回は前回の続きで、MacからSSH接続によりラズパイに簡単にアクセスする方法についてまとめました。
SSH接続の公開鍵と秘密鍵の仕組みや実際のファイル設定をどうするかについて概念的には理解したつもりでも、いざやってみようとすると手が止まってしまうことがほとんどでした。ググりながらなんとか繋げることができたので、この調子で視野を広げていきたいと思います。
また、公開鍵と秘密鍵の仕組みは重要で内容が盛りだくさんのため、別記事にまとめていきます。機会がありましたらそちらもチェックしてみてください!
最後までお読みいただき、ありがとうございました。

参考URL

https://qiita.com/passol78/items/2ad123e39efeb1a5286b
https://tech-blog.rakus.co.jp/entry/20210512/ssh
https://qiita.com/kazokmr/items/754169cfa996b24fcbf5
https://qiita.com/tag1216/items/5d06bad7468f731f590e#fn2
https://qiita.com/kentarosasaki/items/aa319e735a0b9660f1f0
https://tex2e.github.io/blog/linux/ssh-pub-key-auth

Discussion