Gitlab이 SSH 키와 작동하지 않습니다 Gitlab에 문제가 있습니다. 다음

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’사용자 홈 디렉토리 및 .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’사용자의 홈 디렉토리로 바꾸십시오. 권한이 아닌 경우 의견을 말하면 문제가 무엇인지 확인할 수 있습니다.


답변

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


답변

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


답변

내 상황에서 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

답변

호스트 이름에 ‘-‘가있는 경우 발생할 수 있습니다. (이것은 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

답변

환경 변수를 사용하여 키를 전달하는 경우 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)

답변

실행 중 eval $(ssh-agent)문제가 해결되었습니다.