~/.ssh/config
別名: ssh_config / SSH 設定ファイル / ssh config
OpenSSH クライアントの接続設定をホストごとに書いておくユーザー単位の設定ファイル。
各項目は最初に見つかった値が採用されるため、Host ブロックの並び順が結果を左右する。
公開:
定義
~/.ssh/config は OpenSSH クライアントのユーザー単位の設定ファイルである。
接続先ごとにホスト名・ユーザー名・ポート・使う秘密鍵などを書いておくと、ssh myserver のような短い名前だけで接続できる。SSH を使う git や VS Code の Remote-SSH も同じファイルを読む。
詳細
ssh は設定をコマンドラインのオプション、~/.ssh/config、システム全体の /etc/ssh/ssh_config の順に集め、各項目について最初に得た値を使う。
後から書いた値で上書きされることはない。
Host 行に書いたパターンに接続先が一致すると、次の Host か Match 行までの設定が適用される。* は 0 文字以上、? は 1 文字に一致し、Host * は全ホスト共通の既定値になる。
マニュアルも、個別ホストの設定をファイルの先頭に、汎用の既定値を末尾に書くよう勧めている。
どの値が実際に効いているかは ssh -G ホスト名 で確認できる。Host と Match を評価した後の設定を表示して終了するオプションである。
よくある誤解
- 後に書いた設定で上書きできる: 逆で、先に一致した値が勝つ。
Host *を先頭に置くと、後ろの個別設定は同じ項目について効かない。SSH で~/.ssh/configに書いた設定が反映されない の典型である。 - ファイルさえあれば読まれる: マニュアルはこのファイルに厳しい権限を求めている。
グループや他人が書き込める状態だと、ssh は「Bad owner or permissions」と出して接続前に止まる。
関連
秘密鍵の指定は IdentityFile、鍵の常駐は ssh-agent の項目を参照する。