【1Password移行⑥】SSH鍵を一括取り込みしてディスクから消す
前回、1本だけSSHキーを移行してSSH接続が通ることを確認しました。
今回は残りの鍵をまとめて移行して、ディスク上のファイルを削除していきます。
移行対象の鍵を整理する
まず ~/.ssh/ にある秘密鍵を全部リストアップします。
# 秘密鍵ファイルを一覧表示(.pub がついていないファイル)
ls ~/.ssh/ | grep -v '\.pub$' | grep -v 'config' | grep -v 'known_hosts' | grep -v 'authorized_keys'出てきたファイルのうち、まだ1Passwordに移行していないものが今回の対象です。
古くて使っていない鍵があれば、この機会に削除を検討するのもありです。
op CLI で鍵をインポートする
1PasswordアプリのGUI操作でも1本ずつインポートできますが、CLIを使うと少し楽です。
まずCLIでサインインします。
op signinSSHキーのインポートは op item create で行います。
# 秘密鍵ファイルを読み込んでSSH Keyアイテムを作成
op item create \
--category "SSH Key" \
--title "SSH-本番サーバー" \
--vault "Infra" \
"private key[concealed]=$(cat ~/.ssh/server_key)"ただ、正直なところ鍵が2〜3本なら GUIでインポートするのが一番間違いが少ない です。
CLIのSSH Key作成はフィールド指定が少し独特なので、GUI操作のほうが確実です。
鍵が10本以上あるなら自動化する価値がありますが、そうでなければGUIで1個ずつやるのをおすすめします。
全部移行できたか確認する
インポートが終わったら、SSH agentに鍵が認識されているか確認します。
ssh-add -l1Passwordに保存した鍵の一覧が表示されれば認識されています。
「The agent has no identities.」と出る場合は、1Passwordアプリを開いてSSH agentが有効になっているか確認してください。
接続確認してからディスクのファイルを削除する
必ず接続確認をしてから削除します。削除後に「やっぱり繋がらなかった」となると面倒なので。
各鍵の接続先で確認します。GitHubなら:
ssh -T git@github.com本番サーバーへのSSHなら実際に接続してみます。
全部通ったら、秘密鍵ファイルを削除します。
# 秘密鍵ファイルを削除(公開鍵は残してもOK)
rm ~/.ssh/id_ed25519
rm ~/.ssh/id_rsa
rm ~/.ssh/server_key
# 確認
ls ~/.ssh/秘密鍵(.pub なし)のファイルがなくなっていればOKです。
公開鍵(.pub あり)は残しておいても問題ありません。
バックアップも削除する
前回作ったバックアップも削除します。
ここを忘れると「ディスクから消した」意味がなくなります。
rm -rf ~/ssh-backup-*ここまで完了すると、~/.ssh/ には設定ファイル(config、known_hosts、公開鍵)だけが残った状態になります。
秘密鍵はすべて1Passwordの中です。
次回 B-4 では、移行中・移行後にハマったポイントをまとめます。
今回は以上です!