こんな時に便利です!
- 複数のRSA鍵を使用しており、Macにログインした時に、それらの秘密鍵をSSH-Agentに自動的に登録したい
本記事で使用している環境
- macOS High Sierra 10.13.6
- OpenSSH 7.6p1
1. ~/.ssh
直下の秘密鍵をSSH-Agentに登録するシェルスクリプト
$ find ~/.ssh -maxdepth 1 -type f | grep -E "\.pub$" | sed -E "s/\.pub$//g" | xargs ssh-add -K
-
find
コマンドで、~/.ssh
直下のファイルパス名を取得します。 -
grep
コマンドで、.pub
拡張子が付いたファイル名(公開鍵のファイル名)に絞り込みます。 -
sed
コマンドで、末尾の.pub
を取り除きます。(公開鍵に対応する秘密鍵ファイルのパス名に変換) -
xargs
とssh-add
コマンドで、秘密鍵をSSH-Agentに登録します。(-K
オプションで、Macのキーチェーンにパスフレーズを保存することができます)
例えば、以下のようなディレクトリ構成の場合、~/.ssh/ssh_foo
と~/.ssh/ssh_bar.pem
がSSH-Agentに登録されます。
$ pwd
/Users/nia_tn1012
$ ls
config known_hosts ssh_bar.pem ssh_bar.pem.pub ssh_foo ssh_foo.pub
$ find ~/.ssh -maxdepth 1 -type f | grep -E "\.pub$" | sed -E "s/\.pub$//g" | xargs ssh-add -K
Identity added: /Users/nia_tn1012/.ssh/ssh_bar.pem (/Users/nia_tn1012/.ssh/ssh_bar.pem)
Identity added: /Users/nia_tn1012/.ssh/ssh_foo (/Users/nia_tn1012/.ssh/ssh_foo)
2. Automatorでシェルスクリプトを実行するappファイルを作成
次にAutomatorアプリを使って、先ほどのシェルスクリプトを実行するappファイルを作成します。
Automatorを起動して新規書類を作成します。書類の種類はアプリケーションを選択し、アクションからシェルスクリプトを実行を選択します。(検索窓に「シェル」と入力すると探しやすいですよ)
シェルスクリプトの入力欄に、先ほどのシェルスクリプトコードを入力し、アプリケーションを保存します。
本記事では
run_on_login.app
として保存しています。
3. ログイン項目に先ほど作成したappファイルを追加
システム環境設定を開き、ユーザーとグループを選択します。
ログインユーザーを選択し、ログイン項目のタブから項目の追加ボタンを推して、先ほど作成したappファイルを選択します。非表示のチェックボックスはオフでOKです。
これで、ユーザーがMacにログインした時にappファイルが呼び出され、~/.ssh
直下の秘密鍵ファイルがSSH-Agentに登録するシェルスクリプトが自動的に実行されます。
以下のコマンドを実行して、鍵が正しく登録されていれば成功です!
$ ssh-add -l