SSH 공개 키를 authorized_keys에 복사 한 후 서버에서 계속 비밀번호를 요청합니다.


44

클라우드에서 실행되는 Ubuntu 서버가 있습니다. 사용자 ( git)를 만들었습니다 . 폴더 /home/git에서 .ssh/디렉토리와 authorized_keys파일을 만들었습니다 .

그러나 SSH 공개 키를 authorized_keys파일 에 넣으면 서버에서 계속 암호를 묻습니다.

내가 뭘 잘못 했어?


ypur를 어디에 공개합니까? 사용자 자식 또는 루트? 당신은 그것을 어떻게 액세스합니까? ssh <you> @ <server> o <git> @ <server> 또는 root @ <server> .. 확인하고 추가 정보를 추가하십시오.
maniat1k

답변:


42

서버 측에서 ssh 데몬은에 오류를 기록 /var/log/auth.log하므로보고 된 내용을 보려면 해당 파일을 확인하십시오.

클라이언트 측에서 연결을 설정할 때 -v플래그 (또는 -vv또는 -vvv)를 추가하여 자세한 정보를 표시 할 수 있습니다 . 이런 식으로 문제를 식별 할 수 있습니다.

확인해야 할 다른 사항이 있습니다.

  • /home/git/.ssh/authorized_keys소유 인지 확인하십시오 git.
  • /home/git/.ssh/authorized_keys600 ( -rw-------) 모드 인지 확인하십시오 .

또한 /etc/ssh/sshd_config파일을 확인 하십시오.

  • PubkeyAuthentication 로 설정해야합니다 yes
  • AuthorizedKeysFile인증 된 키의 위치를 ​​결정 하는 지시문 도 있습니다. 주석 처리되었거나 기본값으로 설정되어 있는지 확인하십시오 %h/.ssh/authorized_keys.

감사! 이 옵션을 시도하고 나중에 피드백으로 돌아갑니다!
Luis Dalmolin

/var/log/auth.log파일 이 보이지 않으면 어떻게합니까? 이것을 켜는 방법이 있습니까?
Steve Robbins

1
/var/log/auth.log가 없으면 로그가 / var / log / secure에있을 수 있습니다.
CoverosGene

어리석은 실수로, .pub 파일을 연결하려는 서버의 .ssh 폴더 안에 넣었습니다. authorized_keys 폴더로 이동하십시오.
CenterOrbit

또한 홈 디렉토리 자체에서 그룹 쓰기 권한을 제거해야했습니다. 그런 다음 ssh를 다시 시작했습니다sudo service ssh restart
Dylan Pierce

19

또한 사용자 홈 디렉토리 (귀하의 경우, / home / git)가 귀하 만 쓸 수 있는지 확인하십시오. 내 홈 디렉토리가 그룹 쓰기 가능했기 때문에이 문제가 한 번 발생했습니다. /var/log/auth.log는 "인증 거부 : 디렉토리 / home / chuck에 대한 소유권 또는 모드가 잘못되었습니다"라고 말했습니다. (이것은 다른 사람이 엉망이었던 authorized_keys 파일을 사용하지 않도록하는 것입니다!)


이것은 확실히 도움이되지만 xeyes의 답변에 더 추가 된 것 같습니다 .
gertvdijk

1
세상에, 고마워!. 내가 구글에서 한 모든 검색 때문에 내 눈이 불타고 있었다. 마침내 작동했습니다!. 정말 고맙습니다.
GTRONICK

고마워! 나는 해결책을 찾는 데 몇 시간을 보냈다 ... 그리고 이것은 내 모든 문제를 해결했다.
Afaria 2016 년

예. 그거였다. 기꺼이 다음 답변을 읽기로 결정했습니다
Katushai

또한 사용자의 홈 디렉토리 인 / etc / passwd를 체크인하십시오 . 내 기괴한 문제는 표준이 아니었다는 것입니다.
drodsou

5

이를 해결하는 방법에는 여러 가지가 있습니다 . 비밀번호 인증을 사용하지 않도록 sshd(서버 측) 또는 ssh(클라이언트 측)을 구성 할 수 있습니다 . 서버에서 비밀번호 인증을 비활성화하면 서버가 더 안전 해지지 만 키를 풀면 문제가 발생할 수 있습니다.

sshpubkey 인증을 사용하여 (클라이언트 측) 을 만들려면 ssh명령에 몇 가지 옵션을 추가하십시오 .

ssh -o PubkeyAuthentication=yes -o PasswordAuthentication=no -X git@server

이것이 작동하면 시스템 전체 또는 사용자 별 PasswordAuthentication=nossh 클라이언트 구성 파일에서 옵션을 영구적으로 설정할 수 있습니다 (자세한 내용은 참조 )./etc/ssh/ssh_config~/.ssh/configman ssh_config


1
기본적 /etc/ssh/ssh_config으로 Debian / Ubuntu 시스템의 모든 SSH 클라이언트 구성 ( )은 이미 상세 모드에서 호출 할 때 표시되는 것을 먼저 선호 PubkeyAuthentication 하고 시도 ssh합니다.
gertvdijk

3

로컬 컴퓨터에서 ~ / .ssh / config를 사용하고 있습니까? 구성 파일에서 IdentityFile 지시문을 사용하고 공개 키를 가리킬 때이 문제가 발생했습니다. 예를 들면 다음과 같습니다.

Host Cloud
    Hostname cloud.theclouds.com
    User git
    IdentityFile ~/.ssh/config/mykey # This is correct

    # IdentityFile ~/.ssh/config/mykey.pub # This is incorrect


1

확인해야 할 또 다른 사항은 공개 키에 추가 캐리지 리턴이 있는지 여부입니다. 위의 조언에 따라 /var/log/auth.log를 검토하고 키를 읽을 때 오류가 발생했습니다. 열쇠는 4 줄이 아닌 2 줄 정도였습니다. 키에 추가 캐리지 리턴이 포함되었습니다.

vi 편집기를 사용할 때 shift-j를 사용하여 행을 결합하고 키 문자열에서 여분의 공간을 지우십시오.


1
권한을 세 번 확인했습니다 sshd_config. 30 분 동안 내 머리를 벽에 부딪쳤다. 이것은 나의 실수였다! 어쨌든, 나는 편집 한 모든 파일을 추가 줄 바꿈으로 끝내는 습관을 들었습니다. 끝에 하나의 키와 캐리지 리턴이 있어도 인증을 망칠 수 있습니다.
jrhorn424

----- END RSA PRIVATE KEY ----- 비트도 가지고 있어야합니다.
tobych

1

개인 키가 여러 개인 경우 ssh connection 명령에서 -v 스위치를 사용하여 다른 기본 키가 연결을 시도하고 있는지 확인하십시오. 그렇지 않은 경우 ssh 클라이언트에 다음 명령과 함께 사용하도록 지시하십시오.

ssh-add path/to/private/key

1

SSH 에이전트에 키를 추가 할 수도 있습니다.

u@pc:~$ ssh-agent bash
u@pc:~$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/u/.ssh/id_rsa: # ENTER YOUR PASSWORD
Identity added: /home/u/.ssh/id_rsa (/home/u/.ssh/id_rsa)

0

전화를 걸 수도 있습니다.

sudo git clone gituser@domain:repo.git

루트 사용자 SSH 키를 추가하지 않은 경우 authorized_keysgituser


0

Ubuntu 18.04.02 LTS를 실행하는 컴퓨터에서 사용 권한 ~/.ssh을 600 으로 설정하라는 제안이 작동하지 않았습니다. 권한을 700으로 설정해야했는데 문제가 없었습니다.


0

내 .ssh / 디렉토리 및 authorized_keys 파일 권한이 올바르지 만 다른 자체 유도 문제로 인해이 "암호 프롬프트"문제가 발생했습니다.

마우스 기반 강조 표시 및 복사 / 붙여 넣기를 사용하여 로컬 id_rsa.pub의 정보를 서버의 authorized_keys 파일로 복사했습니다. 이것은 데이터를 한 줄로 성공적으로 복사했지만 vi로 파일을 편집 할 때 보이지 않는 줄 끝에 원하지 않는 공간이있는 곳입니다. 이 원치 않는 공간을 제거하면 난 그냥 ssh 수 있습니다.


0

그래서 나에게 일어난 일은 로컬 컴퓨터에서 액세스 할 수있는 2 개의 VM이 있다는 것입니다 (2 개의 키 id_rsa.pub 및 id_rsa2.pub). 내 ssh 연결이 ssh user@xx.xx.xx.xx 연결에 기본적으로 id_rsa.pub을 사용하고 있음을 깨달았습니다. 구성 파일을 추가하고 다음과 같이 모든 호스트에 사용할 ID를 지정하여 문제를 해결했습니다.

vi ~/.ssh/config

Add both hostnames and their identity file as follows:

Host server1.nixcraft.com
  IdentityFile ~/Users/.ssh/id_rsa1
Host server2.nixcraft.com
  IdentityFile /backup/home/aymen/.ssh/id_rsa2
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.