SSH

秘密鍵・公開鍵を作成する(Mac)

よく忘れるので、SSH接続に使う秘密鍵・公開鍵を作成するコマンドをメモしておきます。

概要

GithubやBitbucketなど色々なサイトへのアクセスに使うので、鍵の発行のやり方(コマンド)をメモしておく。

秘密鍵・公開鍵を作成する (接続元 - クライアント)

下記コマンドにて、鍵を指定のフォルダに作成する。

ターミナル
$ install -m 0700 -d ~/.ssh
$ cd ~/.ssh

$ ssh-keygen -t rsa -b 4096 -C "hoge@example.com" -f ~/.ssh/id_rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):  <-- パスフレーズを入力(任意)
Enter same passphrase again:  <-- もう一度、パスフレーズを入力(任意)
Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.

$ ls ~/.ssh
id_rsa  id_rsa.pub

※ id_rsa   (秘密鍵)・・・ クライアントPCに配置
※ id_rsa.pub (公開鍵)・・・ 接続対象サーバに登録

公開鍵を設置する(接続先 - サーバ)

カレントフォルダに「.ssh」がない場合は、下記コマンドで作成する。

ターミナル
$ install -m 0700 -d ~/.ssh

接続元(クライアントPC)で作成した公開鍵(id_rsa.pub)を「authorized_keys」に追記する。

$ vi ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

パスフレーズを変更する

パスフレーズを設定したが、変更したい場合に下記コマンドで変更できます。

ターミナル
$ ssh-keygen -p {古いパスフレーズ} -N {新しいパスフレーズ} -f ~/.ssh/id_rsa

鍵の暗号強度の確認

$ ssh-keygen -lf ~/.ssh/id_rsa
4096 SHA256*******/*********************** hoge@MacBook-Air.local (RSA)

複数の公開鍵を使い分ける

接続時に -i オプションで鍵ファイルを指定することで、鍵を使い分けることができる。

ターミナル
$ ssh -i ~/.ssh/id_rsa.github -T git@github.com

~/.ssh/config に使用する鍵を列挙しておけば、鍵ファイルを勝手に探してくれます。

~/.ssh/config
IdentityFile ~/.ssh/id_rsa

Host github github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa.github

Host bitbucket
  HostName bitbucket.org
  User hoge
  IdentityFile ~/.ssh/id_rsa.bitbucket

OpenSSH 7.3以上の場合は、Includeが使えるので、個別ファイルに分割することもできるようです。

[OpenSSHのバージョン確認]

ターミナル
$ ssh -V
OpenSSH_7.4p1, LibreSSL 2.5.0

[ファイル構成]

/Users/hoge/.ssh/
├─ conf.d
│   ├─ bitbucket
│   └─ github
├─ config
├─ id_rsa
├─ id_rsa.bitbucket
└─ id_rsa.github

[各ファイルの内容]

/Users/hoge/.ssh/config
Include conf.d/*

Host *
  IdentityFile ~/.ssh/id_rsa
/Users/hoge/.ssh/conf.d/bithub
Host github github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa.github
/Users/hoge/.ssh/conf.d/bitbucket
Host bitbucket
  HostName bitbucket.org
  User hoge
  IdentityFile ~/.ssh/id_rsa.bitbucket

注意すること

パソコンが故障した場合などに、別のパソコンでサーバーにアクセスすることが出来ない。
そのような場合に備えて、秘密鍵ファイル( id_rsa )をバックアップしておく。

参考資料