SSH鍵の変更作業メモ

Updated: / Reading time: 4 minutes

自宅サーバーや各種サービスで使用している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 clonegit 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に登録する必要があります。

Tags:

Updated: