Git은 SSH URL을 사용할 때 비밀번호를 묻지만 ssh는 비밀번호를 묻지 않습니다.

Git은 SSH URL을 사용할 때 비밀번호를 묻지만 ssh는 비밀번호를 묻지 않습니다.

저는 3개의 서버(Ubuntu 16.04 2개, Mac Mini 1개)와 Macbook 여러 대를 보유하고 있습니다.

하나의 서버 우분투는 gitlab용이고 다른 하나는 내부 사이트 서버입니다. 맥 미니는 CI를 실행하고 있습니다.

최근 gitlab 서버가 다른 gitlab 서버로 교체되었습니다. (교체된 하드웨어, 동일한 IP 주소 및 호스트 이름, 새 소프트웨어, 새 SSH 키, 기타 모든 하드웨어(다른 서버 및 랩탑)는 이전과 마찬가지로 SSH 키를 사용합니다.)

모든 맥북은 서버에 있는 사용자의 사용자 이름/비밀번호를 사용하여 SSH를 통해 서버에 연결할 수 있으며 Git을 사용하여 공개 키를 사용하여 Git 서버를 통해 복제, 푸시 등을 할 수 있습니다.

사이트 서버는 SSH(공개 키를 통해)를 통해 git 서버에 연결할 수 있지만 환영 메시지가 나타나면 연결이 종료됩니다. 사이트 서버는 공개 키와 함께 git을 사용할 수 없습니다. Git이 비밀번호를 묻는 메시지를 표시하지 않고 한동안 지속되고 사용자 문서 디렉토리에서 테스트를 사용할 때만 작동하기 시작하는 공개 키로 작동하지 않는 한 공개 키와 함께 git을 사용할 수 없습니다. git Breaks의 Clone 디렉토리에 다시 추가합니다 /var/www(우연의 일치일 수 있으며 두 번만 작동했습니다).

CI와 git 서버의 연결에는 문제가 없습니다.

ssh -v를 사용하면 ssh가 올바른 공개 키를 사용하고 있음이 출력에 표시됩니다.

따라서 사이트 서버에서 다음 명령을 실행하십시오.

ssh [email protected] 

연결한 다음 연결을 끊지만

git clone [email protected]:somerepo.git

git 사용자에게 비밀번호를 물어보세요.

사이트 서버에는 gitlab에 SSH 키를 사용하여 등록된 사용자가 있습니다.

여러 호출의 출력 예:https://pastebin.com/QH0AntK7

답변1

나는 같은 문제를 우연히 발견했습니다. 문제는 git사용자의 홈 디렉토리에서 루트로 무언가를 하고 있었기 때문에 인증된 SSH 키 파일을 읽을 수 없다는 것이었습니다.

수정 사항은 다음을 실행하는 것입니다.

$ chown -R git:git /home/git/.ssh

답변2

가장 먼저 테스트해야 할 것은 사이트 서버에서 git 서버로의 키 기반 SSH가 작동하는지입니다. 귀하의 설명에 따르면 그렇지 않은 것 같습니다. SSH를 실행하기 전에 사이트 서버에 사용자의 공개 키가 있습니까 cat?git~/.ssh/authoried_keys

답변3

@LazyBadger에 대한 로그를 생성한 후 다른 SSH 키를 사용하고 있기 때문에 sudo로 실행할 때만 실패한다는 것을 깨달았습니다.

Git 서버의 사이트 서버 계정에 루트 SSH 키를 포함시켰더니 이제 작동합니다.

답변4

OP가 해결책을 찾았지만 이런 일이 발생할 수 있는 다른 방법 때문에 어려움을 겪고 있습니다.

연결은 ssh성공하지만 또는 에서 git fetch구성한 경우 다음과 같습니다(키 이름이 변경됨).sshcommand.git/config~/.gitconfig

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    sshcommand = ssh -i /home/user/.ssh/repo_deploy
[remote "origin"]
    ...

ssh-copy-id나는 복사하는 /home/user/.ssh/id_rsa대신 복사하는 데 익숙하기 때문에 /home/user/.ssh/repo_deploy내 결과는 OP의 결과와 매우 유사합니다.

관련 정보