更新日:
投稿日:

基本のフォーマット

複数のホストを記述でき ssh <Host> で接続できる

Host hoge
   User foo
   Hostname git1.example.com
   IdentityFile ~/.ssh/config/id_ed25519_foo
   Port 22222
Host piyo
   User bar
   Hostname git2.example.com
   IdentityFile ~/.ssh/config/id_ed25519_bar
   Port 20202

設定項目

項目 意味合い
Host sshコマンドで指定する接続先名。Gitで利用する場合はHostnameと合わせる必要がある
User ログインするユーザー名
Hostname 接続先のホスト名
IdentityFile 秘密鍵のパス
Port 接続先のポート
ForwardAgent プロキシサーバー側の設定。クライアントからの接続を中継するかどうか
ProxyCommand 踏み台サーバーへの接続コマンド

トラブルシューティング

GitHubにSSHで繋ぎに行ったときにError: Permission denied (publickey)と出る

GitHubへのSSH接続はUsergitでなければならない

そういえばgitコマンドはユーザー名を直に指定しているのかSSH Configでgit以外を指定していても通った気がする

GitHubにSSH接続しているときにgit clonegit pushがフリーズする

Hostの値がHostnameと異なるとフリーズすることがある

関連記事

更新日:
投稿日:

毎回パスワードを聞かれるのは面倒なのでkeychainを使って記憶させる。

確認環境

WSL2

Env Ver
keychain 2.8.5
Ubuntu 20.04.5 LTS

実機

Env Ver
keychain 2.8.5
Ubuntu 24.04.3 LTS

手順

1. keychainのインストール

sudo apt install keychain

2. keychainの設定

.zshrcに次の行を追加。

keychain -q --nogui --agents ssh,gpg --quick <SSH秘密鍵のパス> <GPG鍵のkeyid>

GPG鍵のkeyidは以下で取得可能。

gpg --list-secret-keys --keyid-format=long

3. エージェント連携をシェル設定に書く

~/.keychain配下にホスト名でHOGE-shのようなファイルができているので、これを.zshrcから読み込む。内容的にはssh-agentとkeychainが疎通するための環境設定と思われる。

具体的には以下の内容を.zshrcに追記すればよい。

source $HOME/.keychain/`hostname`-sh

最終的な.zshrcの状態としては以下のようになっていればよい。

keychain -q --nogui --agents ssh,gpg --quick <SSH秘密鍵のパス> <GPG鍵のkeyid>

source $HOME/.keychain/`hostname`-sh

hostname-sh-gpgみたいなファイルも出来ているが私の環境ではこれを読み込むと上手く動かなかったので、このファイルは指定しないほうが良さそうに見えた。

トラブルシュート

GPGのキーが見つからないエラーが出る

  • Warning: can't find DEADBEEF; skipping

上記が出た場合
~/.gnupg/gpg.confに対して以下の記述をすることで改善する可能性がある(この対策は不完全かもしれない

keyid-format LONG

GPGキーのパスフレーズのプロンプトがGUI側に出る

.zshrcに以下を追記するとCUI側に出るようになる。

export GPG_TTY=$(tty)

更新履歴

  • 2026-01-21: エージェントとの連携設定が漏れていたのを追記
  • 2026-01-19: Ubuntu実機で確認したので、その結果を記事に反映し、記事を読みやすく改良