こんな時に便利です!
- 複数の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

