공개 키를 사용한 SSH 로그인에 실패했습니다.

공개 키를 사용한 SSH 로그인에 실패했습니다.

공개 키를 사용하여 centos7을 실행하는 원격 서버에 연결하려고 합니다.

키를 생성했습니다

ssh-keygen

그런 다음 키를 서버에 복사합니다.

ssh-copy-id [email protected]

원격 시스템에서 생성되었지만 authorized_keysSSH 로그인에는 여전히 비밀번호가 필요합니다.

삼중 상세 옵션을 사용하여 로그인을 시도했습니다.

ssh -v [email protected]

그것은 나에게 다음과 같은 것을 제공합니다:

OpenSSH_7.6p1 Ubuntu-4ubuntu0.7, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to chip02.phy.ncu.edu.tw [140.115.32.12] port 22.
debug1: Connection established.
debug1: identity file /home/longhoa/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
debug1: identity file /home/longhoa/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/longhoa/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/longhoa/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/longhoa/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/longhoa/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/longhoa/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/longhoa/.ssh/id_ed25519-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.7
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4
debug1: match: OpenSSH_7.4 pat OpenSSH* compat 0x04000000
debug1: Authenticating to chip02.phy.ncu.edu.tw:22 as 'hoa'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:ALKc8EF9HMXaCSs/aN4wsfpFN8Bh1W9twUxOTueP5Kk
debug1: Host 'chip02.phy.ncu.edu.tw' is known and matches the ECDSA host key.
debug1: Found key in /home/longhoa/.ssh/known_hosts:1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
No Kerberos credentials available (default cache: FILE:/tmp/krb5cc_1000)

debug1: Unspecified GSS failure.  Minor code may provide more information
No Kerberos credentials available (default cache: FILE:/tmp/krb5cc_1000)

debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:S79m96anBkvF16Rjihe80MYbcU1fZlfPxE5686k/vn4 /home/longhoa/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /home/longhoa/.ssh/id_dsa
debug1: Trying private key: /home/longhoa/.ssh/id_ecdsa
debug1: Trying private key: /home/longhoa/.ssh/id_ed25519
debug1: Next authentication method: password
[email protected] password: 
debug1: Authentication succeeded (password)

Google에서 검색한 결과 올바른 권한 설정에 대한 언급이 있었고 지침에 따라 마침내 내 컴퓨터에서 키를 찾았습니다.

-rw------- 1 longhoa longhoa 1.7K 23-01-08|14:14:40 id_rsa
-rw-r--r-- 1 longhoa longhoa  399 23-01-08|14:14:40 id_rsa.pub

원격 서버에 대한 권한:

drwx------. 2 hoa zh 4.0K 23-01-08|15:10 /home/hoa/.ssh
-rw-------. 1 hoa zh  399 23-01-08|14:23 /home/hoa/.ssh/authorized_keys
dr-xr-xr-x. 29 root root  4096 22-12-27|17:26 /
drwxrwxrwx. 41 root root  4096 22-11-24|18:38 /home
drwx------. 58 hoa  zh   12288 23-01-11|00:47 /home/hoa/

SELinux를 언급하고 서버에서 디버깅하는 다른 답변이 있지만 해당 서버에 대한 루트 액세스 권한이 없으므로 서버 없이는 아무것도 할 수 없습니다.

그러면 어떻게 작동하게 만들 수 있나요? 매우 감사합니다.


업데이트 1

@roaima의 제안을 시도했습니다.

ssh -nvv -o NumberOfPasswordPrompts=0 [email protected] 2>&1 | grep "debug2: host key"

반품:

debug2: host key algorithms: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected],[email protected],ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
debug2: host key algorithms: ssh-rsa,rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519

나는 또한 id_dsa와 id_ed25519를 시도했지만 둘 다 작동하지 않는 것 같습니다.


업데이트 2 @roaima와 @telcoM이 원격 호스트 설정이 잘못되었음을 지적했습니다. 관리자와 통화 후 상태를 업데이트하겠습니다.

답변1

내 생각에는 서버 관리자가 기본 ssh-rsa호스트 키 알고리즘을 정확하고 현명하게 비활성화했을 가능성이 높습니다. 이는 기본 사용으로 ssh-keygen인해 키 쌍이 무시된다는 의미입니다.

클라이언트에서 다음 명령을 실행하여 이를 확인할 수 있습니다.

ssh -nvv -o NumberOfPasswordPrompts=0 [email protected] 2>&1 | grep 'debug2: host key'

클라이언트와 서버 모두에서 지원되는 허용 가능한 호스트 키 알고리즘이 나열됩니다. ssh-rsa(매우 좋은) 보안상의 이유로 서버에서 비활성화되어 있으므로 이 명령 출력의 두 번째 줄에 나열되지 않습니다 .

예를 들어, 아래는 내 로컬 시스템에서 이 명령을 실행한 결과입니다. ssh-rsa첫 번째 줄(클라이언트)에는 나열되어 있지만 두 번째 줄(서버)에는 나열되지 않은 것을 볼 수 있습니다 . 호스트 키 알고리즘을 사용하려면 두 줄에 나열되어야 합니다.

debug2: host key algorithms: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected],ssh-ed25519,[email protected],rsa-sha2-512,rsa-sha2-256,ssh-rsa
debug2: host key algorithms: rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519

ssh-keygen이 경우 클라이언트와 서버 모두에 존재하는 키 유형의 특정 변형을 사용해야 합니다 . 다음 키 쌍은 기본 RSA 키 쌍 대신 ED25519 키 쌍을 생성합니다.

ssh-keygen -t ed25519

인용하다

답변2

drwxrwxrwx. 41 root root  4096 22-11-24|18:38 /home

원격 호스트에서는모든 사람은 쓰기 액세스 권한을 갖고 있어 /home누구나 다른 사람의 홈 디렉토리의 이름을 바꾸거나 삭제할 수 있습니다.sshd이는 올바르지 않으며 해당 하위 트리의 모든 파일을 신뢰할 수 없게 됩니다 . authorized_keys결과적으로 SSH 공개키 인증작동하지 않습니다홈 디렉토리가 있고 /home다른 곳에 사용자 정의 파일이 없는 모든 authorized_keys사용자 의 경우. 이는 RSA뿐만 아니라 모든 키 유형에 영향을 미칩니다.

일반 사용자는 쓸 필요가 없습니다 /home. 일종의 중앙 집중식 사용자 계정 관리(AD, LDAP, NIS 등)가 있지만 각 시스템에 별도의 사용자 홈 디렉토리가 있는 경우 원격 호스트의 관리자가 설치하고 구성해야 할 수 있습니다. pam_mkhomedir.so첫 번째 로그인 시 올바른 권한을 가진 홈 디렉토리를 자동으로 생성합니다.

원격 호스트의 시스템 관리자는 다음 sudo chmod 755 /home또는 이에 상응하는 작업을 수행해야 합니다.최대한 빨리권한을 /home표준으로 설정합니다 drwxr-xr-x. 누구나 쓰기 가능(Everyone /home-Writable)을 사용하면 사용자는 오래되고 잘 알려진 많은 트릭을 사용하여 서로를 공격할 수 있습니다. 다른 사용자의 홈 디렉터리를 완전히 삭제하여 파기하는 것은 가장 간단한 방법일 뿐입니다.

관련 정보