[Mercurial][Git] SSHオプションを変更する方法

投稿者: | 2014/11/05

GitやMercurialでSSH経由でcloneやpullなどをすることがかなり多くありますが、ポート番号や秘密鍵のパスがデフォルト(e.g. ~/.ssh/id_rsa) と異なっていたり、ProxyCommandなどのSSHオプションを付けたりしたいことも多くの場合あります。

今回は、そのような場合の設定方法をまとめてみました。

~/.ssh/configに書く

これが一番簡単ですね。Gitなどの操作以外にもSSH接続する場合によく使います。
僕は自分のPC(Mac book Air)でこのような設定をしています。

EC2インスタンスを頻繁に立ち上げたり削除したりするので、~/.ssh/known_hostsを見ないようにするかつ、残さないようにしたいためにStrictHostKeyChecking noUserKnownHostsFile /dev/nullを設定しています。
また、サーバによってはSSHが切断されることがあるため、ServerAliveInterval 120と少し長めですが設定しています。

~/.ssh/configに書くことで簡単に設定できますが、諸事情で書けない(書きたくない)場合もあります1 ので、Mercurial, Gitそれぞれの設定方法もまとめておきます。2

Mercurialの場合

--sshオプションを付けることで簡単にできます。

例えば、cloneしたい場合は、このようになります。

毎回、--sshオプションを付けるのが面倒な場合は、~/.hgrcに書くこともできます。

Gitの場合

Mercurialと比べると若干面倒ですが、変数GIT_SSHにSSHオプションを付けることでできます。~/git-ssh.shというファイルにSSHオプションを設定します。ファイル名やパスなどは任意です。

cloneしたい場合は、次のようにします。

最後に

MercurialやGitでSSHオプションを指定する場合の設定方法をまとめてみました。なんてことない小ネタですが、知っておくと便利ですのでぜひ活用してみてください。

  1. ある特定のサーバのみSSHオプションを適用させたい場合などが考えられます []
  2. 他にも方法があるかもしれませんのでご存知の方はコメントくださると嬉しいです []

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*