web-dev-qa-db-ja.com

カスタムSSHポートのGit

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

git clone [email protected]:gitolite-admin

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

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

Host mydomain.com
    Port 12345

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

131
ryanzec
git clone ssh://[email protected]:[port]/gitolite-admin

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

288
Christo

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

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

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

ssh://[email protected]:4242/~/projects/jillweb

そして、jillとしてログインするとき(ファイルのアクセス権があると仮定):

ssh://[email protected]:4242/~jack/projects/jillweb

9
Daniel Santos

(更新:数年後、「git non-default ssh port」を検索するときに、GoogleとQwantの「airlines」はまだここに私を送ります)新しい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デバイスなど)を許可するという追加の利点があります。

5
earizon

上記の答えは素晴らしく素晴らしいですが、私のような新しいgitユーザーにとっては明確ではありません。いくつかの調査の後、この新しい答えを提供します。

1 ssh configファイルの方法の問題は何ですか?

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

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ポートを変更するには、標準構文を使用する必要があります

1
Jim Green