Git On Custom SSH 포트


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


Windows에서 읽으 /Users/USERX/.ssh/config려면 HOME로컬 환경을 로 설정해야 합니다 /Users/USERX.
kenorb

답변:


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

1
가용 스루풋과 Windows에서, 작업 구문 것 같다git clone ssh://git@mydomain.com:port/home/user/gitolite-admin
로마 플라실

18

위의 답변은 훌륭하고 훌륭하지만 나와 같은 새로운 git 사용자에게는 명확하지 않습니다. 그래서 약간의 조사 후에, 나는이 새로운 답변을 제공합니다.

1 ssh 구성 파일 방식의 문제점은 무엇입니까?

구성 파일이없는 경우 구성 파일을 작성할 수 있습니다. 게다가 portconfig 파일 다른 ssh를 설정 옵션을 포함 할 수 있습니다 user IdentityFile등등, 설정 파일의 모습은 좋아

Host mydomain.com
    User git
    Port 12345

Linux를 실행하는 경우 구성 파일에 엄격한 권한 (사용자에 대한 읽기 / 쓰기, 다른 사람이 액세스 할 수 없음)이 있어야합니다.

2 ssh url 방식은 어떻습니까?

멋지다. 우리가 알아야 할 유일한 것은 git에 ssh url에 대한 두 가지 구문이 있다는 것입니다.

  • 표준 구문 ssh://[user@]host.xz[:port]/path/to/repo.git/
  • 구문 같은 scp [user@]host.xz:path/to/repo.git/

기본적으로 Gitlab과 Github는 구문 URL 과 같은 scp 를 표시 하며 사용자 정의 ssh 포트를 제공 할 수 없습니다. 따라서 ssh 포트를 변경 하려면 표준 구문을 사용해야 합니다


14

홈 디렉토리 (모든 UNIX)에서 상대 경로를 원할 경우 다음과 같은 이상한 구문을 사용합니다.

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

예를 들어, 리포지토리가 /home/jack/projects/jillweb서버에 jill.com있고 포트 4242 jack에서 sshd수신 대기하는 것처럼 로그인하는 경우 :

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

다음과 같이 로그인 할 때 jill(파일 권한이 있다고 가정) :

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


이 사람은 잠시 동안 걸려 있었고 정확히 내가 알아야 할 것이 었습니다. 이것이 어디에 기록되어 있는지 알고 있습니까?
Shaun Wilson

@Shaun Wilson 죄송합니다. 기억 나지 않습니다. 그러나 답을 찾는 데 시간이 걸렸으므로 여기가 내 막 다른 골목 중 하나이므로 여기에서 공유해야한다고 생각했습니다.
Daniel Santos

1
감사! 특히 당신이 공유 호스팅 계획에 있다면 ~ [user] 부분이 중요합니다. 이것은 내 저장소를 복제하는 데 도움이되었습니다.
Jim Wilson

2
@ShaunWilson 경로 사양은 표준 UNIX 경로입니다. UNIX 시스템에 로그인 한 경우 ~는 홈 디렉토리의 속기이며 홈 디렉토리는 비표준 위치에있을 수 있으므로 많은 입력을 저장하는 데 유용합니다. 위의 내용은 Windows 서버에서 작동하지 않을 수 있습니다.
Samuel Åslund

@Samuel Åslund 감사합니다. 답변을 업데이트했습니다. 나는 종종 Windows에 대해 잊어 버립니다. 왜냐하면 글쎄요. 덜 중요한 것은 이것이 중요한 차이점입니다.
Daniel Santos

9

(업데이트 : 몇 년 후 "git non-default ssh port"를 검색 할 때 Google과 Qwant "항공사"가 여기로 계속 전송됩니다.) 최신 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.