この記事の内容
毎回SSHコマンドを打つのがめんどくさいなと思い、楽になる方法がないかと調べているとあったので紹介します。
ssh-agent
と ssh-add
は、SSH(Secure Shell)を使用する際に認証キーを管理・利用するためのツールです。これらを活用することで、SSH接続時に毎回パスフレーズを入力する手間を省くことができます!
ssh-agent
と ssh-add
の概要
ssh-agent
-
役割:
ssh-agent
はSSH認証エージェントで、SSHキー(秘密鍵)のパスフレーズを一度入力するだけで、その後のSSH接続で再度パスフレーズを入力する必要がなくなります。これにより、複数のSSH接続を行う際の利便性が向上します。 -
使用方法:
ssh-agent
を起動すると、エージェントがバックグラウンドで動作し、環境変数(例:SSH_AUTH_SOCK
)を設定します。これにより、SSHクライアントがエージェントにアクセスできるようになります。
ssh-add
-
役割:
ssh-add
は、SSHエージェントにSSH秘密鍵を追加するためのコマンドです。エージェントが秘密鍵を管理し、SSH接続時に自動的に認証を行います。 -
主な機能:
-
キーの追加:
ssh-add /path/to/private_key
で指定した秘密鍵をエージェントに追加します。 - パスフレーズの入力: 秘密鍵がパスフレーズで保護されている場合、追加時にパスフレーズの入力が求められます。
-
キーの一覧表示:
ssh-add -l
でエージェントに追加されている鍵の一覧を表示します。 -
キーの削除:
ssh-add -d /path/to/private_key
で特定の鍵を削除、ssh-add -D
で全ての鍵を削除できます。
-
キーの追加:
SSHエージェントの起動とSSH接続の実行方法
エージェントの起動方法
-
現在のシェルでエージェントを起動する:
eval "$(ssh-agent -s)"
このコマンドを実行すると、SSHエージェントがバックグラウンドで起動し、必要な環境変数が現在のシェルに設定されます。
-
新しいシェルでエージェントを起動する方法:
ssh-agent bash
これにより、新しい
bash
シェルがssh-agent
とともに起動します。このシェル内でのみエージェントが有効になります。
秘密鍵のエージェントへの追加
ssh-add ~/.ssh/id_rsa
ここで、~/.ssh/id_rsa
は秘密鍵のパスです。パスフレーズが設定されている場合、この段階で入力を求められます。
SSH接続の実行
エージェントに鍵を追加した後、通常通りSSHコマンドを使用して接続できます。
ssh ユーザー名@リモートホスト
パスフレーズの再入力なしで接続が可能です。SSHクライアントは自動的にエージェントを介して認証を行います。
具体例
# 1. SSHエージェントを現在のシェルで起動
eval "$(ssh-agent -s)"
# 2. 秘密鍵をエージェントに追加
ssh-add ~/.ssh/id_rsa
# 3. SSH接続を実行
ssh user@remote_host
まとめ
-
ssh-agent
は、秘密鍵のパスフレーズ入力を一度で済ませるためのエージェントです。 -
ssh-add
は、秘密鍵をエージェントに追加・管理するためのコマンドです。 -
SSH接続手順:
-
ssh-agent
を起動する。 -
ssh-add
で秘密鍵をエージェントに追加する。 - 通常のSSHコマンドで接続する。
-
これらの手順を実行することで、SSH接続時の認証がスムーズになり、作業効率が向上します。