使い方
起動
Mac
Mac の場合は ssh-agent
の起動は不要である。
Windows
Windows の場合は、
$ ssh-agent bash
または、
$ eval `ssh-agent -s`
または、
$ exec ssh-agent bash
で起動する。
秘密鍵の追加
秘密鍵を追加する。
$ ssh-add ~/.ssh/id_rsa
追加された秘密鍵を確認する。
$ ssh-add -l
登録された秘密鍵を消去する。
$ ssh-add -d ~/.ssh/id_rsa
登録された秘密鍵を全て消去する。
$ ssh-add -D
参考:
ssh-agent を使って公開鍵認証方式の SSH パスワード入力を省略する方法 | server-memo.net
SSH 接続時に ssh-agent を利用してパスフレーズの入力を省略する | メグリ株式会社
ssh-agent を使って SSH のパスフレーズを省略する方法 | 有限工房
ssh-agent の使い方/SSH でパスフレーズを省略する方法 | わくわくBank
SSH のパスフレーズ入力を省略する方法 | Inhale n’ Exhale
ssh-agent(1) | man ページ (nxmnpg.lemoda.net)
How to make Git not prompt for passphrase for SSH key on windows? – Super User
自動起動
参考:
Git Bash の起動時に ssh-agent を自動起動させる | nKB
Git Bash すると ssh-agent を自動で起動 | himadatanode’s blog
起動しているか判定する
参考:
プロセスを終了させる
eval `ssh-agent -s`
コマンドで SSH Agent を起動した場合、シェル終了後にプロセスが残ったままになるので、シェル終了前に SSH Agent を終了させる。
$ ssh-agent -k
Bash 終了時に自動的に SSH Agent を終了させるには、.bash_logout
ファイルに ssh-agent -k
コマンドを追加しておく。
コード:
Kill all ssh-agents on Windows (versedi) – GitHub Gist
参考:
ssh-agent の注意点 | serenska’s diary
pkill でまとめてプロセスを削除 | orca8 の備忘録
How to kill ssh-agent properly – Stack Overflow
ソケットを使ってエージェントを再利用する
~/.bashrc
に次の処理を追加する。
SSH_AGENT_FILE=$HOME/.ssh-agent
test -f $SSH_AGENT_FILE && source $SSH_AGENT_FILE
if ! ssh-add -l > /dev/null 2>&1; then
ssh-agent -s > $SSH_AGENT_FILE
source $SSH_AGENT_FILE
ssh-add $HOME/.ssh/id_rsa
fi
Code language: Bash (bash)
参考:
ssh config および ssh-agent の活用 | Qoosky
Git Bash すると ssh-agent を自動で起動 | himadatanode’s blog
SSH 接続時に ssh-agent を利用してパスフレーズの入力を省略する | メグリ株式会社
Start ssh-agent on login – Stack Overflow
GitHub で使う
参考:
Git Bash で GitHub に SSH 接続 – Qiita
新しい SSH キーを生成して ssh-agent に追加する | GitHub Docs [公式]
keychain
参考:
SSH のパスフレーズ入力を keychain で省略する – Qiita
WSL2 の Ubuntu で keychain 経由で ssh-agent を使う | ロボ太
WSL2 の Ubuntu に keychain を設定した | akichan
Windows で使う
参考:
Windows 10 の ssh-agent をコマンドプロンプト/WSL/Git Bash で使ってみた – Qiita
Windows と WSL2 で同じ SSH key を使用する方法 | KOMARI
混沌を極める Windows の ssh-agent 事情 – Qiita
Setting up SSH-Agent in Windows for Passwordless Git Authentication | InterWorks
How to maintain ssh-agent login session with Windows 10’s new OpenSSH and PowerShell – Super User
Git for Windows
ソケットを環境変数として永続化するには、~/.bashrc
に次の処理を追加する。
SSH_AGENT_FILE=$HOME/.ssh-agent
test -f $SSH_AGENT_FILE && source $SSH_AGENT_FILE
if ! ssh-add -l > /dev/null 2>&1; then
ssh-agent -s > $SSH_AGENT_FILE
source $SSH_AGENT_FILE
ssh-add $HOME/.ssh/id_rsa
if [ -n "$SSH_AUTH_SOCK" ]; then
setx "SSH_AUTH_SOCK" "$SSH_AUTH_SOCK" > /dev/null
fi
if [ -n "$SSH_AGENT_PID" ]; then
setx "SSH_AGENT_PID" "$SSH_AGENT_PID" > /dev/null
fi
fi
Code language: Bash (bash)
Git for Windows に付属の SSH を Git で使用する場合は、GIT_SSH
環境変数を設定する。
> setx GIT_SSH "C:\Program Files\Git\usr\bin\ssh.exe"
コード:
ssh-env.bat (mattn) – GitHub Gist
ssh-env.bat (ttymrz) – GitHub Gist
win-ssh-agent.sh (yaegashi) – GitHub Gist
参考:
Windows でも ssh-agent と ssh-add を使ってパスフレーズ入力を省略する | Big Sky
Tips
SSH 秘密鍵の SSH-Agent をつかった管理ベストプラクティスを考えてみた | 50 ぱーせんとおふ
Omni SSH Agent
リポジトリ:
masahide/OmniSSHAgent: Integrated ssh-agent for Windows – GitHub