다른 SSH 포트로 git remote add


336

Git에서 호스트가 다른 SSH 포트를 사용할 때 어떻게 원격 오리진 서버를 추가 할 수 있습니까?

git remote add origin ssh://user@host/srv/git/example

답변:


573

당신은 이것을 할 수 있습니다 :

git remote add origin ssh://user@host:1234/srv/git/example

1234 사용중인 ssh 포트입니다


10
고마워. 단지 보완 : 경로 부분에서 사용자 홈 디렉토리에 대한 상대 경로가 아닌 절대 경로를 사용하십시오 ...
Snicolas

@ Snicolas : 왜 상대 경로를 사용하지 않습니까?
Hannes

12
@Sincolas 사용자 홈 디렉토리에 저장소가있는 경우 작동합니다. /home/someuser/git-repos/example.git- > ssh : // someuser @ <host> : <port> / ~ / git-repos / example.git . BTW : 당신이 얻을 <이름> .git은 에 의해 REPO 자식 복제 --bare <ADRESS>
MartinL

@Jameo 그것은 절대 경로.
igorw

48
프로토콜을 제거하면 작동하지 않습니다. 즉, 다음을 시도하면 작동하지 않습니다. git remote add origin user@host:1234/srv/git/example
Bijay Rungta

137

~ / .ssh / config 파일을 편집해야합니다. 다음과 같은 것을 추가하십시오 :

Host example.com
    Port 1234

빠른 Google 검색은 나보다 더 자세히 설명 하는 몇 가지 다른 리소스를 보여줍니다 .


16
그것은 나를 위해 일했다. 나는이 접근법을 자식 리모컨에 붙이는 것보다 낫습니다. 감사! 이 방법으로 절대 경로를 지정할 필요가 없습니다.
Michael van Rooijen

이것은 잘 작동합니다. 또한 그렇게하면 기본 id_rsa 대신 특정 키를 가질 수 있습니다. 뿐만 아니라 내 서버는 까다 롭고 암호를 포함하면 실패 할 정도로 빨리해야합니다. 그래서 나는 또한 사용합니다 PasswordAuthentication no.
Alexis Wilke

4
다음과 같이 구성 파일에 숨기는 것보다 원격으로 사용하는 것이 좋습니다. 한 곳에서 모든 것을 가지고 있으면 다른 포트 번호를 잊을 수 없으며 다른 사람이 사용할 수 있도록 URL을 복사하여 붙여 넣을 수 있습니다.
MarcH

1
@MarcH 실제로 상황에 따라 다릅니다. VPS 인스턴스에서 임의의 포트 번호를 사용하고 싶습니다. 구성 파일 내에 포트를 두는 것은 공동 작업자의 정보를 보류 할 수있는 방법 중 하나입니다 (다수의 리모트가있는 경우 배치 리모트 호스트는 내부 소스 코드 저장소와 다릅니다).
Ragunath Jawahar 2016

@RagunathJawahar 난 임의의 포트 번호를 사용하는 것이 매우 일반적인 사용 사례라고 생각하지 않습니다.
MarcH

29

가장 좋은 답변은 저에게 효과적이지 않습니다. 나는 ssh://구걸에서 필요 했다.

# does not work
git remote set-url origin user@example.com:10000/aaa/bbbb/ccc.git
# work
git remote set-url origin ssh://user@example.com:10000/aaa/bbbb/ccc.git

17

당신을 편집하는 사람들을 위해 ./.git/config

[remote "external"]                                                                                                                                                                                                                                                            
  url = ssh://evanc@www.foo.com:11720/aaa/bbb/ccc                                                                                                                                                                                                               
  fetch = +refs/heads/*:refs/remotes/external/* 

1
완전한. 그러나 한 가지 질문은 하위 모듈에 대해 어떻게해야합니까? 작동하지 않는 것 같습니다.
m4l490n

11

ssh://프로토콜 접두사를 사용하는 대신 한 번의 작은 변경으로 SSH를 통한 git 액세스에 기존 URL 양식을 계속 사용할 수 있습니다. 다시 말해 일반적인 URL은 다음과 같습니다.

git@host:path/to/repo.git

대체 포트를 지정하려면 포트를 user@host포함하여 부품 주위에 괄호를 넣으십시오 .

[git@host:port]:path/to/repo.git

그러나 포트 변경이 일시적인 경우 리포지토리의 원격 URL을 변경하는 대신 다른 SSH 명령을 사용하도록 git에 지시 할 수 있습니다.

export SSH_GIT_COMMAND='ssh -p port'
git clone git@host:path/to/repo.git # for instance

2
git @ host : port 주위에 대괄호를 추가하면 나에게 아름답게 작동했습니다. gitlab을 사용하고 있으며 해당 서버에서 비표준 포트가 필요하지만 리포지토리의 절대 경로를 사용할 수 없습니다 (모릅니다). 감사합니다
Thomas Le

1
상대 경로를 지원하고 ssh 설정에 의존하지 않기 때문에 이것은 나에게 가장 유연한 방법 인 것 같습니다
user2882096
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.