비표준 포트가있는 원격 저장소 사용


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'

내 로컬 자식 구성은 다음과 같습니다 .

[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

(포트와 호스트는 실제 포트와 호스트에 대한 자리 표시 자입니다.)

내 자식 구성에 어떤 문제가 있습니까?


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 포트로 설정했을 때 phabricator에서이 문제가 발생했습니다. 이제 정렬되었습니다!
user3791372

답변:


116

다음과 같은 것을 넣으면 .ssh/config:

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

그러면 기본 구문을 사용할 수 있습니다.

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

4
SSH 구성이 해결 방법 일 수 있지만 man git-push가 허용 된 ssh url 형식이 ssh : // [user @] host.xz [: port] /path/to/repo.git라고 말했기 때문에 이로 인해 관심이 생겼습니다. /
gnud

1
확실하지 않습니다. ssh : // fake @ localhost : 333 / fake 주소로 푸시를 시도하고 "포트 333 : 연결이 거부 됨"을 받았기 때문에 구성 git / ssh 버전 문제 일 수 있습니다.
CB Bailey

35
아직도 이것을 필요로하는 사람에게주의를 기울이십시오. 구문은 git clone ssh://username@hostname:333/~/repo홈 디렉토리의 상대 경로 또는 git clone ssh://username@hostname:333/path/to/repo절대 경로
브랜든 Wamboldt

Windows 시스템에서 : c : / windows / system32 / drivers / etc / hosts (필요한 경우 호스트 이름 설정) (예 : 가상 시스템 / 서버)
user3791372

호스트 이름이 아닌 IP가있는 경우 어떻게 할 수 있습니까? 아직 호스트 이름을 IP에 연결하지 않았기 때문에 묻습니다.
ThisIsNotAnId

129

SSH 기반 git 액세스 방법은 http://git-scm.com/docs/git-clone에<repo_path>/.git/config 지정된대로 전체 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

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
안녕하세요 리키, 그것은 나를 위해 일했다 구문 자식 클론 SSH : // 사용자 @ 기계 : 포트 / 경로 - 투 - 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.