非標準ポートでのリモートリポジトリの使用


125

リモートリポジトリ用にローカルgitプロジェクトを設定しています。リモートリポジトリは非標準ポート(4019)で提供されています。

しかし、それは機能しません。代わりに、次のエラーメッセージが表示されます。

ssh: connect to host git.host.de:4019 port 22: Connection refused
fatal: The remote end hung up unexpectedly
error: failed to push to 'ssh://root@git.host.de:4019/var/cache/git/project.git'

私のローカルgit構成は次のとおりです。

[core]
  repositoryformatversion = 0
  filemode = true
  bare = false
  logallrefupdates = true
[remote "origin"]
  url = ssh://root@git.host.de:4019/var/cache/git/project.git
  fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
  remote = origin
  merge = refs/heads/master

(ポートとホストは、実際のポートとホストのプレースホルダーです。)

私のgit構成の何が問題になっていますか?


8
ssh://URLの前に明示的に配置しないと、別の形式であると考えられます。そうssh://example.com:444/etc/一方、ポート44を介してexample.comの/ etc /であるexample.com:444/etc/ポート22を介して行わ/ 444の/ etc / example.comに
Kzqai

5
@Kzqai発言は重要です。つまり、それを実行しgit remote set-url origin git@altssh.bitbucket.org:443/yourname/yourrepo/ても機能しません。しかし、あなたがしなければgit remote set-url origin ssh://git@altssh.bitbucket.org:443/yourname/yourrepo/、これは動作します
オーク

Google-fuの場合-デフォルト以外のポート2222に設定すると、ファブリケーターにこの問題が発生しました。
user3791372 2017

回答:


116

このようなものをあなたに入れたら.ssh/config

Host githost
HostName git.host.de
Port 4019
User root

その後、基本的な構文を使用できるはずです。

git push githost:/var/cache/git/project.git master

4
SSH構成は回避策かもしれませんが、これは私が興味を持った理由です。なぜなら、git-pushは、受け入れられたssh url形式はssh:// [user @] host.xz [:port] /path/to/repo.gitであると言っているからです。 /
gnud

1
確信がありません。ssh:// fake @ localhost:333 / fakeアドレスにプッシュしようとして(予想どおり)「ポート333:接続が拒否されました」という理由で、構成git / sshバージョンの問題である可能性があります。
CBベイリー

35
まだこれを必要とする人に注意してください。構文はgit clone ssh://username@hostname:333/~/repo、ホームディレクトリからの相対パスまたはgit clone ssh://username@hostname:333/path/to/repo絶対パス用です
Brandon Wamboldt

Windowsマシンの場合:c:/ windows / system32 / drivers / etc / hosts(必要に応じてホスト名を設定します(例:仮想マシン/サーバー)
user3791372

ホスト名ではなくIPがある場合、どうすればよいですか?ホスト名をまだIPにリンクしていないのでお願いします。
ThisIsNotAnId

129

SSHベースのgitアクセス方法は<repo_path>/.git/confighttp//git-scm.com/docs/git-cloneで指定されているように、完全なURLまたはSCPのような構文を使用して指定できます

URLスタイル:

url = ssh://[user@]host.xz[:port]/path/to/repo.git/

SCPスタイル:

url = [user@]host.xz:path/to/repo.git/

SCPスタイルは直接のポート変更を許可せず、代わりに次のようなssh_configホスト定義に依存していることに注意してください~/.ssh/config

Host my_git_host
HostName git.some.host.org
Port 24589
User not_a_root_user

次に、シェルでテストできます:

ssh my_git_host

SCPスタイルのURIを次の<repo_path>/.git/configように変更します。

url = my_git_host:path/to/repo.git/

1
Soooooo ...本当に必要なのは、おそらくURLの前にssh://を追加することだけです。
Kzqai

1
ssh urlを指定できるか、またはscp(デフォルト)がポート番号を許可していないことを認識していませんでした。知ってよかった。
Powerlord 2014年

1
scpは実際にはポート番号を許可します(ただし、オプションキーは大文字のPである必要があります):scp -P 2020 file/to/copy user@host:path/to/copy/file/to
Drew

1
私にとっては、に追加ssh://するだけで十分でしたurl。プロトコルがない場合、gitはデフォルトのポートを使用します22。ありがとうございました。
Marek Podyma、

28

これを試して

git clone ssh://user@32.242.111.21:11111/home/git/repo.git

1
こんにちはリッキー、それは私のために構文git clone ssh:// user @ machine:port / path-to-repoで動作しました、そこであなたはマシンがユーザーでなければならないことを書いてください、ありがとう
rtrujillor

9

これは直接修正するのではなく問題を回避しますが、私は~/.ssh/configファイルを追加してこのようなものを持つことをお勧めします

Host git_host
HostName git.host.de
User root
Port 4019

その後、あなたは持つことができます

url = git_host:/var/cache/git/project.git

そして、あなたもすることができssh git_hostscp git_host ...そしてすべてがうまくいくでしょう。


7

SSHは:ポートを指定するときに構文を使用しません。これを行う最も簡単な方法は、~/.ssh/configファイルを編集して追加することです。

ホストgit.host.de
  ポート4019

次にgit.host.de、ポート番号なしで指定します。

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