Snippets

Akiko.T 1つの鍵ペアを複数マシンで使い回す

Created by Akiko.T last modified

1. ssh-keygen で鍵ペアを作成

ssh-keygen.sh に記載してあるようなシェルコマンドで、鍵を生成します。

  • 出来た鍵ペアを、Mac, 各ラズベリーパイの ~/.ssh/ にコピーしてください。

2. ~/.ssh/config の設定

次に、~/.ssh/config の設定をします。 このファイルは、ssh接続をする際に、指定したサーバにはこのアカウントと鍵を使ってsshログインする、といった定義をするためのファイルです。

  • ~/.ssh/config.sample の内容に従って、Macだけでなく、操作したい対象の ~/.ssh/config に追記してください
  • ファイルが存在していなければ、~/.ssh/config というファイルを作って、ホスト名やIPアドレスを修正して書き込んでください

3. ~/.ssh/authorized_keys に、公開鍵の中身を追加

こちらは、操作したい各ラズベリーパイに対して行ってください。(結果的に、どのラズベリーパイの ~/.ssh/authorized_keysにも同じ内容が入ればOK)

  • やっていることは、作成した鍵ペアのうち、公開鍵の内容を、authorized_keys に追加する作業です
  • authorized_keysは、自分のサーバに対してsshでアクセスしようとしてきたリクエストがあったら、リクエストを出す側が提示した秘密鍵と、アクセスを受ける側の公開鍵が合うかどうかをチェックするのに使います
$ cd ~/.ssh/
$ cat raspberry_common_rsa.pub >> authorized_keys

ラズベリーパイのサーバ上では、raspberry_common_rsa.pub(公開鍵)の中身がauthorized_keysに追記された状態であればOKです。 raspberry_common_rsa.pub は使いませんので、削除してしまっても構いません。

raspberry_common_rsa のほうは消さないでください。

4. どういう状態になったか?

この時点で、このような状態になります。

  • ~/.ssh/raspberry_common_rsa はMacをはじめどのサーバにも配置(全て同じ鍵を使う、ということになります)
  • ~/.ssh/config にはMacをはじめどのサーバにも、お互いにsshするためには pi アカウントで raspberry_common_rsa という鍵を使う、という設定が追加されている

つまり、Mac上で作成した鍵ペア(錠前と鍵のセット)と同じものを各サーバにも配置した形になります。 鍵も錠前も同じ形なので、1つだけ作成してコピーして使うようなイメージです。

$ ssh-keygen -f raspberry_common_rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):  # パスフレーズは省略 / 無しでも構わない
Enter same passphrase again: 
Your identification has been saved in raspberry_common_rsa.
Your public key has been saved in raspberry_common_rsa.pub.
The key fingerprint is:
SHA256:........................... アカウント名@macの名前
The key's randomart image is:
+---[RSA 2048]----+
|           .BEB%X|
|                 |
|                 |
|       . o O *.o*|
|        S =   o. |
|         .       |
|                 |
|                 |
|                 |
+----[SHA256]-----+

# 鍵ペアは作業しているディレクトリの下に出来ます
$ ls rasp*
raspberry_common_rsa	raspberry_common_rsa.pub

# まずはMac上の.ssh/ フォルダにコピーもしくは移動させます
$ mv raspberry_common_rsa* ~/.ssh/
# 1台めのラズパイのホスト名ここではssh接続時に ssh pi@xxxxx と接続する時の名前
# 実際の接続はHostName の箇所に正しいIPアドレスかサーバのFQDN (ホスト名.ドメイン名が記載されていればOK

# IdentityFileはssh接続するときにこの鍵を使うよと明示したい場合に設定
# ここではどちらのラズパイに対しても同じ鍵を使うように設定
# 接続時のアカウントはpi アカウントを使います
#

Host raspberry_pi1 # お使いの環境で調整してください
  User pi
  Port 22
  HostName 192.168.xxx.xxx  # お使いの環境で調整してください
  IdentityFile ~/.ssh/raspberry_common_rsa
  TCPKeepAlive yes
  IdentitiesOnly yes

# 2台めのラズパイのホスト名
# 
Host raspberry_pi2 # お使いの環境で調整してください
  User pi
  Port 22
  HostName 192.168.xxx.xxx  # お使いの環境で調整してください
  IdentityFile ~/.ssh/raspberry_common_rsa
  TCPKeepAlive yes
  IdentitiesOnly yes
  
#
# 複数台あるなら繰り返し.....
#

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.