まじめにゆいがどくそん

仕事関連の真面目な記事が満載です、多分。

デフォルト以外のポートや秘密鍵を指定してgitにsshで接続するには?

例えば、以下の状況で運用しているgitリポジトリに接続するとします。

  • リモートサーバー:repository.example.jp
  • リモートリポジトリのディレクトリ:/path/to/repository/repo.git
  • ユーザー名:hoge
  • 接続方法:SSH
  • ポート:22222

この場合、次のコマンドを実行することでリポジトリにアクセスできます。

git clone ssh://hoge@repository.example.jp:22222/path/to/repository/repo.git


ここで、SSHログイン時にパスワード認証ではなく鍵認証している場合、秘密鍵のファイル名がデフォルトの「id_rsa*1」であるならば、上記のままでアクセス可能です。

しかし、運用上の都合で秘密鍵が「id_rsa」以外にも複数存在している、なんてことありがちですよね?

秘密鍵が複数存在している場合は、サーバーごとの秘密鍵の名前を示すための設定ファイルを作成しましょう。

ついでに接続ポートも設定可能です。

※2014-04-28 GitHub用の設定例を追記

設定ファイル作成

下記の内容で ~/.ssh/config ファイルを作成します。複数のサーバー設定を記載可能です。

Host repo.remote
    HostName repository.example.jp
    User hoge
    IdentityFile ~/.ssh/id_rsa.repo.remote
    Port 22222

Host repo.local
    HostName 192.168.1.222
    User huga
    IdentityFile ~/.ssh/id_rsa.repo.local
    Port 22
  • 「Host」……任意の名前でOK。エイリアスとして使用。
  • 「HostName」……接続するサーバーのIPアドレスやFQDN。
  • 「User」……自分のID。
  • 「IdentityFile」……秘密鍵のパス。秘密鍵には任意のファイル名を付けられます。
  • 「Port」……SSHのポート。

configファイル作成後は下記のコマンドで接続できます。

git clone ssh://repo.remote/path/to/repository/repo.git

~/.ssh/config はすべてのSSH接続で共有

なお、~/.ssh/config の設定は、gitに限らず、すべてのssh接続で参照されます。

ということは、単純にサーバーへSSH接続するだけなら、上記の設定の場合、

# repository.example.jpへssh接続
ssh repo.remote

# 192.168.1.222へssh接続
ssh repo.local

だけで済んじゃいます。

2013-09-24 追記

「設定ファイル作成」の説明が紛らわしかったため修正

GitHubにid_rsa以外の名前の秘密鍵で接続(2014-04-28 追記)

GitHub用の秘密鍵の名前を id_rsa 以外にしたい場合は、次の設定を ~/.ssh/config に記述してください。

Host github.com
    HostName github.com                        # 固定値
    User git                                   # 固定値
    IdentityFile ~/.ssh/id_rsa.github  # GitHub用秘密鍵
    Port 22                                    # 固定値

GitHubへのアクセスは通常通り「git@github.com:...」でOKです。

git clone git@github.com:nilfigo/nilfigo.github.io.git

2018-11-01 修正

ドメイン例を「*.example.jp」に変更


わかばちゃんと学ぶ Git使い方入門〈GitHub、Bitbucket、SourceTree〉

わかばちゃんと学ぶ Git使い方入門〈GitHub、Bitbucket、SourceTree〉

GitHubポケットリファレンス (POCKET REFERENCE)

GitHubポケットリファレンス (POCKET REFERENCE)

*1:公開鍵アルゴリズム(キータイプ)がRSAの場合