4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-08-01

こんな時に便利です!

  • 複数の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を起動して新規書類を作成します。書類の種類はアプリケーションを選択し、アクションからシェルスクリプトを実行を選択します。(検索窓に「シェル」と入力すると探しやすいですよ)
シェルスクリプトの入力欄に、先ほどのシェルスクリプトコードを入力し、アプリケーションを保存します。

Automator

本記事ではrun_on_login.appとして保存しています。

3. ログイン項目に先ほど作成したappファイルを追加

システム環境設定を開き、ユーザーとグループを選択します。

ログインユーザーを選択し、ログイン項目のタブから項目の追加ボタンを推して、先ほど作成したappファイルを選択します。非表示のチェックボックスはオフでOKです。

ログイン項目の追加

これで、ユーザーがMacにログインした時にappファイルが呼び出され、~/.ssh直下の秘密鍵ファイルがSSH-Agentに登録するシェルスクリプトが自動的に実行されます。

以下のコマンドを実行して、鍵が正しく登録されていれば成功です!
$ ssh-add -l

参考サイト

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?