[Mac] ログイン時に~/.ssh直下の秘密鍵をSSH-Agentに登録する方法


こんな時に便利です!

  • 複数の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
  1. findコマンドで、~/.ssh直下のファイルパス名を取得します。
  2. grepコマンドで、.pub拡張子が付いたファイル名(公開鍵のファイル名)に絞り込みます。
  3. sedコマンドで、末尾の.pubを取り除きます。(公開鍵に対応する秘密鍵ファイルのパス名に変換)
  4. xargsssh-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

参考サイト