JumpCloudの鍵認証で使用されるauthorized_keys.jcorigを理解する
業務上AWSのEC2のユーザ管理をJumpCloudで統一して管理している.JumpCloud上で管理対象のEC2に鍵認証を許可することができるのだが,公開鍵を設定する方法として「JumpCloudのコンソール上で設定する方法」と「実際にサーバに手動で設定する方法」がある.後者で設定しようとした際に~/.ssh/authorized_keys
の他に~/.ssh/authorized_keys.jcorig
というファイルがあることに気づいた(以降authorized_keys
とauthorized_keys.jcorig
と表記する).今回はこれがなんのためにあるものなのか調べてみた.
authorized_keys.jcorigとは
公式には詳細については書いていなかった. support.jumpcloud.com
実際にauthorized_keys.jcorig
の中身を確認したところ
# Keys added to this file will be automatically # copied to your authorized_keys file by the JumpCloud agent.
と書いてあり,authorized_keys.jcorig
に書くとJumpCloudエージェントがauthorized_keys
にコピーしてくれるようだ.
さらにauthorized_keys
を確認すると
# Keys added to this file will be automatically # copied to your authorized_keys file by the JumpCloud agent. # Constructed by the JumpCloud agent, you can add keys manually in /home/hoge/.ssh/authorized_keys.jcorig
と書いてあり,サーバ上で手動で設定するならauthorized_keys.jcorig
に書き込めという旨が書いてある.
検証
公式にそこまで情報はないがauthorized_keys.jcorig
に書き込めばauthorized_keys
にJumpCloudエージェントが内容を反映してくれるのだろうという予想はできたので,実際に色々と試して検証してみることにする.JumpCloudエージェントがインストールされたEC2を用意し以下を確認していく.
- サーバ上に手動で設定するパターン
authorized_keys.jcorig
に公開鍵を追加authorized_keys
に公開鍵を追加
- JumpCloud上で設定するパターン
- 公開鍵を追加
- 公開鍵を削除
サーバ上でauthorized_keys.jcorig
に手動で公開鍵を追加
まずは正当な方法であろうauthorized_keys.jcorig
に手動で公開鍵を追加する.しかし,しばらくしてもauthorized_keys.jcorig
の内容がauthorized_keys
にコピーされずログインはできなかった.そこで以下3パターンでログインの可否を確認する.
- EC2を再起動すると
authorized_keys.jcorig
の内容がauthorized_keys
にコピーされログインできた authorized_keys
にも公開鍵を記述するとログインできた(その後EC2を再起動しても特に問題なし)- JumpCloudエージェントを再起動する方法では
authorized_keys
に内容がコピーされることはなくログインできなかった
サーバ上でauthorized_keys
に手動で追加
次にauthorized_keys
に公開鍵を追加してみた.するとログインできるようになったが,EC2を再起動をするとauthorized_keys
から公開鍵が消えてしまいログインできなくなった.
ここまでの検証で以下のことがわかる.
- 基本的には
authorized_keys
に公開鍵が登録されているかどうかで認証の機能が動作する一般的なLinuxの仕組みと同じ動きをする authorized_keys.jcorig
に公開鍵を記述してもauthorized_keys
に記述されないと鍵認証されないので,即時でログインしたい場合はEC2を再起動するかauthorized_keys
にも同じ内容を書くことが必須- 手動で公開鍵を追加するには
authorized_keys.jcorig
に書かないと永続化されない - 公開鍵を削除する際は少なくとも
authorized_keys.jcorig
の公開鍵を削除しないと,EC2を再起動した際に再びauthorized_keys
に書き込まれてしまう - 公開鍵を削除する際,即時にログインできないようにするには
authorized_keys.jcorig
の公開鍵を削除してEC2を再起動するかauthorized_keys.jcorig
・authorized_keys
両ファイルから公開鍵を削除する必要がある authorized_keys.jcorig
の内容をauthorized_keys
にコピーする方法として,JumpCloudエージェントの再起動は使えない- 公開鍵の追加・削除共に
authorized_keys.jcorig
が正として振る舞っている
JumpCloudコンソールから公開鍵を追加
JumpCloudコンソールを使って公開鍵を追加すると,EC2を再起動しなくともしばらくするとauthorized_keys
に公開鍵が追加される.一方authorized_keys.jcorig
には何も追加されない.また公開鍵を手動で追加した場合とJumpCloudコンソールから追加した場合とでauthorized_keys
に記述される公開鍵の位置が以下のように異なる.
$ cat authorized_keys # Keys added to this file will be automatically # copied to your authorized_keys file by the JumpCloud agent. [authorized_keys.jcorigからコピーされた手動で設定した公開鍵] # Constructed by the JumpCloud agent, you can add keys manually in /home/yuichiro.takarada/.ssh/authorized_keys.jcorig [JumpCloudコンソールで設定した公開鍵]
JumpCloudコンソールから公開鍵を削除
JumpCloudコンソールを使って公開鍵を削除すると,EC2を再起動しなくともしばらくするとauthorized_keys
から公開鍵が削除される.ちなみに,JumpCloudコンソールから設定されたauthorized_keys
に記述してある公開鍵を手動で削除するともちろんログインはできなくなるがJumpCloudのコンソールからは削除されない.そこからEC2を再起動するとauthorized_keys
にJumpCloudコンソールで設定した公開鍵が再び設定される.
ここまでの検証で以下のことが分かる.
- JumpCloudコンソールを使って追加された公開鍵は
authorized_keys.jcorig
に書き込まれず,authorized_keys
にのみ書き込まれる - JumpCloudコンソールを使って追加・削除された公開鍵は,EC2を再起動せずとも自動で
authorized_keys
に追加・削除が行われる - JumpCloudコンソールを使って追加された公開鍵が
authorized_keys
からサーバ上で手動により削除された場合でも,JumpCloudコンソールから削除されていなければ,EC2の再起動後再びauthorized_keys
に書き込まれる - JumpCloudコンソールの状態を正として振舞う
検証結果からの学び
検証結果から,JumpCloudエージェントが入ったインスタンスでは「サーバ上で手動による公開鍵を設定する」・「JumpCloudで公開鍵を設定する」という2つの公開鍵設定方法がある中で,前者の方法ではauthorized_keys.jcorig
を正としてauthorized_keys
に公開鍵をコピーし,後者の方法ではJumpCloudコンソールを正としてauthorized_keys
に公開鍵をコピーしていることが分かった.運用においては基本JumpCloudコンソール上から設定する方法でなんら問題ないと思うのでそうするつもりだが,どうしても手動で設定する必要がある場合だけ今回の調査を生かしてauthorized_keys.jcorig
に公開鍵を記述する運用にしたい.とにかく,authorized_keys.jcorig
が「サーバ上で手動による公開鍵を設定する」ためのファイルだということは理解した.
まとめ
- JumpCloudエージェントが入ったインスタンスで
authorized_keys.jcorig
というファイルがなんのためにあるのかということを調べた authorized_keys.jcorig
は「サーバ上で公開鍵を設定する」場合の公開鍵を管理するファイルであることが分かった