カスタムSSHポートのGit


149

私のVPSプロバイダーは、SSHポートをデフォルトで(22ではなく)割り当てるカスタムポート番号のままにすることを推奨しています。問題は、リモート構成を作成するときにポート番号を指定できることを知っている間ですが、git cloneを実行するときに同じことはできないようです。私はgitoliteを使用しているので、コマンドのクローンは次のようになります。

git clone git@mydomain.com:gitolite-admin

これをカスタムsshポート番号の使用に変換する方法はありますか?

Windowsでcygwinを実行していることについても触れておきます。私は複数の場所でカスタムポートを~/.ssh/configファイルに追加するように言っているのを見ました

Host mydomain.com
    Port 12345

ただし、cygwinでは、そのファイルは存在しないようです。


8
ファイルのパス名は 、ユーザーのホームディレクトリにあります.ssh/config(ではありませんconf)。基本操作には必要ないため、デフォルトでは存在しません。作成する必要があります。vim ~/.ssh/configそれを開く/作成する(または、インストールされたお好みのテキストエディターを使用する)ことを試してください。
Chris Johnsen、2011


Windowsで読み取るに/Users/USERX/.ssh/configは、HOMEローカル環境をに設定する必要があります/Users/USERX
ケノーブ2014年

回答:


327
git clone ssh://git@mydomain.com:[port]/gitolite-admin

ポート番号は角括弧なしでそこにあることに注意してください:[]


これは機能しますが、Chris Johnsenの修正により、カスタムポート番号を使用するときにクリーンなURLが可能になります
ryanzec

6
:-)私に尋ねると、git URL構文は不正確で、上記はより正規化されています
Christo

あなたが与えた構文はより記述的であることを認めますが、カスタムポート番号を追加することを覚えておくのは面倒です。そのポート番号を構成し、それを覚える必要がないのは少し簡単ですが、それぞれに固有です(そのため、それを両方の方法で行うことができます):)
ryanzec

48
プロトコルを削除すると機能しないことに注意してください。つまり、以下を試しても機能しません。git clone git@mydomain.com:[port]/gitolite-admin
Bijay Rungta 2013

1
Windowsでplinkを使用すると、構文は次のようになりますgit clone ssh://git@mydomain.com:port/home/user/gitolite-admin
RomanPlášilNov

18

上記の回答は素晴らしく素晴らしいですが、私のような新しいgitユーザーにはわかりません。調査の結果、この新しい答えを提供します。

1 ssh設定ファイルの方法の何が問題になっていますか?

構成ファイルが存在しない場合は、作成できます。port設定ファイルに加えて、他のssh設定オプションを含めることができます:user IdentityFileなど、設定ファイルは次のようになります

Host mydomain.com
    User git
    Port 12345

Linuxを実行している場合は、構成ファイルに厳密な権限が必要であることに注意してください。ユーザーには読み取り/書き込みが可能で、他のユーザーはアクセスできません。

2 ssh urlの方法はどうですか?

それはクールです、私たちが知っておくべき唯一のことは、gitにssh urlの2つの構文があることです

  • 標準構文 ssh://[user@]host.xz[:port]/path/to/repo.git/
  • scpのような構文 [user@]host.xz:path/to/repo.git/

デフォルトでは、GitlabとGithubはscpのような構文 url を表示、カスタムsshポートを指定することはできません。したがって、sshポートを変更するには、標準の構文を使用する必要があります。


14

(任意のUNIXの)ホームディレクトリからの相対パスが必要な場合は、次の奇妙な構文を使用します。

ssh://[user@]host.xz[:port]/~[user]/path/to/repo

たとえば、リポジトリが/home/jack/projects/jillwebサーバー上にあり、ポート4242 でリッスンしjill.comているようにログインしている場合:jacksshd

ssh://jack@jill.com:4242/~/projects/jillweb

そして、jill(あなたがファイル権限を持っていると仮定して)ログインすると:

ssh://jill@jill.com:4242/~jack/projects/jillweb


男これはしばらくの間困惑していました、そして私が知る必要があった正確にそれでした。これがどこに文書化されているか知っていますか?
Shaun Wilson、

@ショーン・ウィルソン申し訳ありませんが、よく覚えていません。しかし、答えを見つけるのにしばらく時間がかかったので、これは私の行き止まりの1つだったので、ここで共有する必要があると考えました。
Daniel Santos、

1
ありがとう!特に、共有ホスティングプランを使用している場合は、〜[ユーザー]の部分が重要です。これにより、リポジトリのクローンが作成されました。
ジムウィルソン

2
@ShaunWilsonパス仕様は標準のUNIXパスです。UNIXシステムにログインしている場合、〜はホームディレクトリの省略形です。多くの入力を節約するのに役立ちます。また、ホームディレクトリが標準以外の場所にある可能性があるためです。上記は、Windowsサーバーでは機能しない場合があります。
SamuelÅslund19年

@SamuelÅslundありがとう、私は私の答えを更新しました。私はしばしばWindowsのことを忘れます。なぜなら、私は粘着性があることを意味するわけではありませんが、比較すると恐ろしいです。それでもなお、これは重要な違いです。
ダニエルサントス

9

(更新:数年後、GoogleとQwantの "航空会社"が "git non-default ssh port"を検索すると、ここに私を送信します)新しいgitバージョンでおそらくより良い方法は、GIT_SSH_COMMAND ENV.VARを使用することです:

GIT_SSH_COMMAND="ssh -oPort=1234 -i ~/.ssh/myPrivate_rsa.key" \ git clone myuser@myGitRemoteServer:/my/remote/git_repo/path

これには、他の適切なsshオプション(ポート、priv.key、IPv6、PKCS#11デバイスなど)を許可するという追加の利点があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.