방금 새 데비안 서버를 설정했습니다. 루트 SSH 및 암호 인증을 비활성화했으므로 키 파일을 사용해야 합니다.

기본 사용자의 경우 모든 것이 예상대로 정확하게 작동합니다. 나는 ssh-keygen -t dsa공개 키와 개인 키를 사용 하고 얻었습니다. 하나는 인증된 키에 넣고 다른 하나는 pem 파일에 로컬로 넣습니다.

배포할 수 있는 사용자를 만들고 싶었기 때문에 기본적으로 동일한 프로세스를 수행했습니다. 나는 adduser그것을 에드 만들어 낸 .ssh폴더를 RAN ssh-keygen -t dsa(나는 또한 RSA 시도), 자신의 적절한 위치에 열쇠를 넣어.

불운. 내가지고있어 Permission denied (publickey)오류가 발생했습니다. 작동하는 계정과 정확히 동일한 키를 사용하면 동일한 오류가 발생합니다. 비밀번호 인증을 활성화하면 비밀번호로 SSH를 통해 로그인할 수 있습니다.

이것을 어떻게 디버깅합니까?

편집하다

자세한 ssh 출력(deployer.pem이 적절한 키임):

debug2: key: /Users/eli/.ec2/deployer.pem (0x100126830)
debug2: key: /Users/eli/.ec2/deployer.pem (0x100126b30)
debug2: key: /Users/eli/.ec2/deployer.pem (0x0)
debug1: Authentications that can continue: publickey
debug3: start over, passed a different list publickey
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /Users/eli/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Offering public key: eli.pem
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Offering public key: /Users/eli/.ec2/deployer.pem
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Offering public key: /Users/eli/.ec2/deployer.pem
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Trying private key: /Users/eli/.ec2/deployer.pem
debug1: read PEM private key done: type DSA
debug3: sign_and_send_pubkey
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).
answer

두 부분: 먼저 ssh 서버에서 디버깅을 켜십시오. /etc/ssh/sshd_configLogLevel을 편집 하고 DEBUG로 늘립니다. 그런 다음 ssh 서버가 config를 사용하여 구성을 다시 로드하도록 합니다 killall -HUP <sshd pid>.

그러면 서버가 사용자 /var/log/secure및/또는 /var/log/auth로그 파일 에 훨씬 더 많은 세부 정보를 추가하게 됩니다.

두 번째로(실제로 먼저 시도할 수 없음) 클라이언트 측에서 디버그 수준을 높이십시오. 와 함께 상자에 ssh

$ ssh -vvv hostname

그러면 프로세스가 실패한 위치에 대한 더 많은 정보가 인쇄됩니다.

ssh 서버에서 디버그 수준을 높이는 경우 완료되면 다시 낮추는 것을 잊지 마십시오.

키 파일에 대한 권한을 확인했습니까? .ssh/id_dsa파일 (600)와 사용자가 소유해야합니다. ssh -v [email protected]이것이 문제인지 확인하기 위해 실행 하십시오.

사용자의 홈 디렉터리, 사용자의 홈 디렉터리 아래에 있는 .ssh 디렉터리 또는 사용자의 authorized_keys 파일에 사용자가 아닌 다른 사람(그룹 또는 기타)이 쓸 수 있는 경우 .ssh/authorized_keys 파일이 쓸 수 없기 때문에 키 인증이 완전히 실패합니다. 더 이상 신뢰할 수 있습니다(다른 사용자가 이를 대체하거나 수정하여 해당 사용자로 로그인할 수 있음).

노력하다:

chmod go-w ~USER ~USER/.ssh ~USER/.ssh/authorized_keys

문제가 해결되는지 확인하십시오.

chown -R username. /home/username/.ssh

chmod 700 /home/username/.ssh

chmod 400 /home/username/.ssh/id_dsa /home/username/.ssh/id_dsa.pub

chmod 600 /home/username/.ssh/authorized_keys

다음은 Pubkey 인증(예: ssh rsa)을 통해 ssh가 작동하도록 하는 동안 발생한 문제를 기반으로 한 몇 가지 팁입니다.

위의 팁(권한, -vvv)에 추가하여: - 대상 서버에서 passwd -S 사용자 이름 또는 passwd -s 사용자 이름을 통해 계정 정보를 확인합니다. 출력은 [username][stat][pwchg][min][max][warn]과 같습니다. [stat] 열에 LK가 표시되면 계정의 잠금을 해제해야 합니다. [pwchg] 날짜가 [max]일보다 오래된 경우 max days를 변경하거나 passwd -x 999 또는 passwd username을 통해 사용자 이름의 비밀번호를 변경해야 합니다.

예시:

# uname -n
myserver

# pwd
/export/home/santac
# ls -l .ssh
-rw-------   1 santac   users        796 Jul  8 00:27 authorized_keys
# cat .ssh/authorized_keys
ssh-rsa AAABBBCCCboogaboogaAAABBBCCCidonthinkyougetthatthisisbogusbutwhattheheck== [email protected]
# date
Wed Jul  8 00:55:10 GMT 2015
# passwd -S santac
santac    LK    03/05/14     7   60     10
(note stat is LK or locked)
# passwd -u santac
# passwd -S santac
santac    PS    03/05/14     7   60     10
(note [pwchg] date is older than 60 days)
# passwd santac
Enter New Password:
Confirm New Password:
# passwd -S santac
santac    PS    07/08/15     7   60     10
(all good now)

FROM THE OTHER SERVER:
# uname -n
otherserv
# pwd
/export/home/santac
# ls -l .ssh
-rw-------   1 santa   users       1675 Jul  6 20:23 id_rsa
-rw-------   1 santa   users        394 Jul  6 20:23 id_rsa.pub
# cat .ssh/id_rsa.pub
ssh-rsa AAABBBCCCboogaboogaAAABBBCCCidonthinkyougetthatthisisbogusbutwhattheheck== [email protected]

LOOKS GOOD...