HRR Co., Ltd.

技術的な記録を残していくことを目的としています。1次情報を大事にしています。

GitでSSH経由なのにパスワード聞かれる問題で登場するssh-agentについて

はじめに

GitでSSH経由なのにパスワードが聞かれる場合、ssh-agentの話が出てますが、それについて詳細に掘り下げた記事になります。

これをするくらいなら、HTTPSで接続してキャッシュしてもいい気もします。

やり方、使い方

# sshエージェントを起動する(子プロセス立ち上げ)
ssh-agent bash

# こちらでも可(現在のシェルで実行させる)
eval `ssh-agent`
 
# ssh-agentに鍵を登録
ssh-add  [鍵のパス]

# ssh-agent をkillする場合は…
ssh-agent -k

ssh-add以降は、この鍵を使用するSSH接続について、パスワードを聞かれることはなくなります。

ssh-agent について

ssh-agent とは

マニュアルを見るのが一番ですね。

man ssh-agent

日本語訳はこちら。

nxmnpg.lemoda.net

ssh-agent はOpenSSHの認証エージェントです。

ssh-agent is a program to hold private keys used for public key authentication. Through use of environment variables the agent can be located and automatically used for authentication when logging in to other machines using ssh(1).

ssh-agentは公開鍵認証に使われる秘密鍵を保持するプログラムです。
環境変数を使うことでエージェントの場所を特定し、sshを使ったログイン時に自動的に使用されます。(意訳)

書いてあるとおりですが…
起動後最初にssh-add秘密鍵のパスワードを入力することで、以後入力無しでSSH接続が可能になります。

起動方法は2つ

ssh-agent bash のようにシェルを指定することで子プロセスとして立ち上げるか、eval を介して現在のシェルで実行するか、です。
ssh-agent 単発でも起動できますが、その際は自分で標準出力された環境変数を設定してあげないと、利用ができません。

最後に

毎回コマンド実行するのは大変なので、シェルの起動時に仕込むのもありですね。
以上でした!