Gitlab이 SSH 키와 작동하지 않습니다


10

Gitlab에 문제가 있습니다. 다음 가이드를 사용하여 Gitlab https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md 를 설치하고 구성했습니다 . 설치가 잘 진행되는 것 같았습니다. 웹 응용 프로그램이 제대로 작동하는 것 같습니다. 그러나 기본적으로 Gitlab을 사용할 수 없습니다. SSH를 통해 복제하려고 할 때 HTTP에서 403 오류가 발생했으며 권한이 거부되었습니다.

개인 키가 Windows와 OS X 모두에서 올바르게 설정되었는지 확인했습니다. 서버에서 공개 키를 볼 수 있습니다. ~ / .ssh.config의 구성 파일에 다음을 추가했습니다.

Host {hostname}
    User git
    Hostname {hostname}
    PreferredAuthentications publickey
    IdentityFile C:/Users/{username}/.ssh/id_rsa

이것이 내가 / var / log / secure에서 보는 것입니다

Jan 14 17:31:48 dev_version_control sshd[3696]: Connection closed by 192.168.17.113
Jan 14 17:32:18 dev_version_control sshd[3700]: Connection closed by 192.168.17.113

/var/log/messagegit 또는 ssh를 사용해 보았을 때 역할 이 없었습니다.

여기서 어디로 가야할지 모르겠습니다. 어떤 제안?

git username을 사용하는 SSH의 의미가 무엇인지 모르겠습니다. 내가 사용한 가이드는 자식 사용자의 암호를 만들지 않았으며 사용자가 로그인하는 데 사용할 수 없다고 언급했습니다.


사용자 'git'으로 Git 서버에 SSH로 연결할 수 있습니까? '-vvv'매개 변수를 추가하여 연결이 닫힌 이유에 대한 추가 출력을 얻을 수 있습니까? / var / log / secure 및 / var / log / messages 파일을 검사하여 오류가 있는지 확인할 수도 있습니다.
jaseeey

클라이언트에 공개 키가 설정되어 있지 않습니다. 개인 키 가 클라이언트에 있는지 확인해야합니다 . 공개 키는 서버에서 사용됩니다.
EEAA

내 질문을 업데이트했습니다. 도움이 희망
greyfox

답변:


10

클라이언트에 개인 키를로드 한 경우 'git'사용자 홈 디렉토리 및 .ssh 디렉토리에 대한 권한 문제 일 수 있습니다.

/ home / git 디렉토리를 마스크 0711로 변경하십시오 :

chmod 0711 /home/git

/home/git/.ssh 디렉토리에 마스크가 0700인지 확인하십시오.

chmod 0700 /home/git/.ssh

/home/git/.ssh/authorized_keys 파일의 마스크가 0600인지 확인하십시오.

chmod 0600 /home/git/.ssh/authorized_keys

튜토리얼에서 다른 경우 / home / git을 'git'사용자의 홈 디렉토리로 바꾸십시오. 권한이 아닌 경우 의견을 말하면 문제가 무엇인지 확인할 수 있습니다.


그게 문제 였을 수도 있습니다. Mac에서 git clone git @ {hostname} : {workspace} / {repository}를 사용하여 복제 할 수 있다는 것을 알고 있습니다. 불행히도 저는 Windows 컴퓨터를 직장에두고 내일 시험해보아야합니다. 공개 / 개인 키 인증이 Gitlab에서 HTTP를 통해 작동하지 않습니까? 나는 Github의 작동 방식에 대한 인상을 받았지만 그것에 대해서는 틀릴 수 있습니다.
greyfox

공개 / 개인 키 인증은 SSH를 통해서만 작동합니다. HTTP를 사용하는 경우 사용자 이름과 비밀번호를 사용하여 무엇이든해야합니다. v1.8과 같은 새 버전의 Git을 사용하는 경우 사용자 이름과 비밀번호를 묻는 메시지가 표시됩니다. 사용자 이름과 원격의 암호 인라인 (즉, 추가 그래서 망할 놈의 이전 버전이 작업을 수행하지 않습니다 https://username:password@git.server.com/repo.git)
jaseeey

아아 지금은 훨씬 더 이해가됩니다. Windows 용 GitHub 앱은 자격 증명을 저장합니까? 도와 주셔서 감사합니다!
greyfox

GitHub Windows 응용 프로그램을 많이 사용하지는 않았지만 메모리에서 열 때 로그인이 필요하다고 생각합니다. 따라서 액세스 자격 증명을 저장하면 항상 입력 할 수 있습니다.
jaseeey

1

공개 키 (웹 페이스를 통해 가져온)에 대한 레코드 /home/git/.ssh/authorized_keys가 하나만 있고이 키에 gitlab의 접두사와 제목이 있는지 확인하십시오. 즉, gitlab을 설치하기 전에 동일한 키를 수동으로 추가 한 경우 제거하십시오.


당신은 거기에 여러 개의 키를 가질 수 있으며 개인 키가 일치 할 수 있다면 로그인 할 수 있습니다 ...
jaseeey

@Jason, 좀 더 정확하게 설명하기 위해 방금 편집했습니다
sinm

고마워요. Gitlab을 사용하여 키를 추가하기 전에 ssh 키를 수동으로 넣었고 중복 키로 인해 문제가 발생했습니다.
6ft Dan

1

또한 사용자에게 gitlab에서 복제 / 풀 / 푸시에 대한 적절한 권한이 있는지 확인하는 것이 좋습니다. gitlab 사용자가 충분한 권한을 가지고 있지 않은 문제의 원인이 ssh / https 구성을 살펴 보는 데 너무 많은 시간을 보냈습니다 ...


1

내 상황에서 FreeBSD 패키지를 통해 gitlab을 설치했습니다. Gitlab SSH가 작동하지 않았습니다. 이것의 원인은 git의 잘못된 홈 디렉토리였습니다. (vipw)

git:*:211:211::0:0:gitosis user:/usr/local/git:/bin/sh

나는 이것을 다음으로 변경했다.

git:*:211:211::0:0:gitosis user:/home/git:/bin/sh

1

호스트 이름에 '-'가있는 경우 발생할 수 있습니다. (이것은 RFC 952 에 따라 합법적이지만 )

ssh는 이름에 '-'가있는 호스트의 암호를 묻는 메시지를 표시합니다. ~ / .ssh / config에 별칭을 추가하고 내 자식 원격 URL에서 해당 별칭을 사용하여 문제를 해결했기 때문에 이것은 ssh 구성 파일 구문 분석의 문제 인 것 같습니다.

즉, C : / Users / {username} /. ssh / config에 다음과 같은 것을 입력하십시오.

Host {a}
    User git
    Hostname {a-b.domain}
    IdentityFile C:/Users/{username}/.ssh/id_rsa

그리고 당신이 형태의 리모컨이있는 곳

origin  git@a-b.domain:repo-name.git

제거한 다음 양식을 사용하여 다시 추가하십시오.

origin  git@a:repo-name.git

1

환경 변수를 사용하여 키를 전달하는 경우 base64로 인코딩해야합니다. 그렇지 않으면 암호를 묻는 오류와 함께 실패 할 수 있습니다. 이는 키가 손상되었음을 의미합니다. 당신이 볼 경우:

$ ssh-add <(echo "$SSH_PRIVATE_KEY")
Enter passphrase for /dev/fd/63: ERROR: Job failed: exit code 1

그런 다음 SSH_PRIVATE_KEY 변수를 base64로 인코딩하십시오. OS X를 사용하는 경우

cat ~/.ssh/ssh_key_for_project | base64 | pbcopy

인코딩하고 클립 보드에 복사합니다. 그런 다음 .gitlab-ci.yml 스크립트 줄을

- ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d)


0

내 문제는 puttygen에 의해 생성되고 저장된 개인 키 파일 id_rsa가 우분투 머신에서 생성 된 것과 다른 형식을 가지고 있다는 것입니다. 우분투 컴퓨터에서 페어 키를 만든 후에는이 파일을 % UserProfile % .ssh 폴더 아래의 Windows 컴퓨터로 다시 복사 한 다음 새로 생성 된 공개 키를 Gitlab에 추가하십시오. 더 이상 권한이 거부되었습니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.