SSH鍵の変更作業メモ
自宅サーバーや各種サービスで使用しているSSH鍵を変更して回ったので、その作業内容をメモします。
方針
鍵を変更するサービス
まず、鍵を変更するサービスを調べて回りました。
サービス | 用途 |
---|---|
GitHub | 個人用、仕事用 |
BitBucket | 個人用、仕事用 |
OpenShift | 個人用のみ |
Digital Ocean | 個人用のみ |
自宅サーバー | 個人用のみ |
これらに登録してある公開鍵を更新します。個人用と仕事用でアカウントを分けているサービスがあるので、個人用鍵と仕事用鍵を作成します。
NOTE: 個人用鍵と仕事用鍵で分けるのが面倒だったので1ファイルで管理しようとしましたが、同じ鍵を別アカウントで登録することができなかったので、それぞれ鍵を作成しました。例えば、GitHubの個人用アカウントに鍵を登録して、次に仕事用アカウントに同じ鍵を登録しようとするとエラーになります。
鍵を保有する端末
次に、鍵を保有する端末を列挙します。
- MacBook
- Windows PC
- iPhone
これらが保有する秘密鍵を更新します。iPhoneは、serveraudiatorというアプリでssh接続をするために、秘密鍵を持っています。
鍵の保管方法
各サービスには公開鍵を登録して、端末には秘密鍵を保有しますが、複数端末で鍵を共有するためにLastPassに秘密鍵(文字列で)とそのパスワードを保管することとします。以前はDropboxに鍵ファイルを格納して、それを各端末で共有していましたが、操作ミスを考えてやめました。
NOTE: LastPassに秘密鍵をファイル添付しようとしましたが、WindowsとOS Xの両方で試しても動作が不安定だったため、やめました。
鍵の作成方針
ビット数は多いほうが良いと考え、8192bitで作成します。やり過ぎだとは思いますが。パスワードは必ず設定として、英数記号の50桁以上とします。どうせ手入力する機会なんてそう多くはありませんので。
作業
鍵を作成
鍵は、 必ず端末側で作成 します。端末側で作成して各サービスに公開鍵を登録する、という手順になります。
シェル環境であれば、ssh-keygen -t rsa -b 8192
で作成します。Windows PCであれば、putty-genで作成します。
作成後、秘密鍵・公開鍵・パスワード・秘密鍵(ppk形式)をLastPassのセキュアノートに保管します。
公開鍵をサービスに登録
自宅サーバー以外の各サービスに、 公開鍵を登録 します。間違えて秘密鍵を登録しようとしてもエラーになるだけですが、せっかく秘匿している秘密鍵をネットワークに流すべきではありません。登録手順は、だいたいサービス設定あたりから鍵登録ページに行けます。
自宅サーバーは注意が必要です。旧公開鍵を削除→新公開鍵を登録という手順で行った場合、万が一、操作をミスしたり作業途中でssh接続を切断してしまうと取り返しがつかなくなることがあるので、以下の手順で行ったほうが良いです(ターミナルを2個開くので、ターミナルA、ターミナルBと表記します)。
- ターミナルAを開き、自宅サーバーにssh接続する。
- 旧公開鍵をリネームして、新公開鍵を作成する。
- 端末の旧秘密鍵をリネームして、新秘密鍵を配置する。
- ターミナルBを開き、自宅サーバーにssh接続する。
- 失敗した場合、どこかの作業がミスしている。
- ターミナルAで、旧公開鍵を削除する。
NOTE: サービスに登録した公開鍵とローカルの鍵が本当に同じであることを確認するには、鍵指紋を比較すると目視確認しやすいです。サービス側の鍵指紋は、公開鍵を登録すると表示されます。ローカルでは、
ssh-keygen -l -E md5 -f id_rsa.pub
で鍵指紋を表示することができます。
ssh接続確認
GitHub、BitBucketは、git clone
とgit push
が出来ることを確認します。アクセス確認用リポジトリを作成して、適当にファイルを編集、プッシュしました。
OpenShift、Digital Ocean、自宅サーバーは、sshログインが出来ることを確認します。
NOTE: OS Xのキーチェーンは、ssh接続しようとしたサーバーに対応する秘密鍵がキーチェーンに登録されていない場合、初回だけパスワード入力を要求して以降は覚えていてくれますが、これが正しく登録されないことがあります。
ssh-add -K id_rsa
でキーチェーンに追加できるので、パスワード・エントリーを作成すれば、以降のパスワード入力を省略できます。
NOTE: OS Xの場合、1サービスに2個以上の鍵が該当しても良い具合に判断して使ってくれますが、Windowsでpagentを使っている場合、アプリによってはリストの先頭にある秘密鍵を使うようです(例えば、SourceTree)。なので、1サービスで2個以上の鍵を使い分けたい場合は、つど使う鍵をpagentに登録する必要があります。