SSH 비밀번호 없는 로그인은 두 번째 상자의 서비스 계정을 제외하고 대부분 잘 작동합니다.

SSH 비밀번호 없는 로그인은 두 번째 상자의 서비스 계정을 제외하고 대부분 잘 작동합니다.

몇 달 전에 저는 작은 Linux 상자를 설정하고 개인 사용자 ID와 서비스 계정 ID에 대해 비밀번호 없는 SSH 로그인을 설정했습니다. 이는 양측 모두에게 좋습니다. 개인 사용자 ID의 키를 저장하는 위치와 동일한 위치에 있는 클라이언트 상자에 서비스 계정의 개인/공개 키 파일을 저장합니다.

나는 다음을 기본 가이드로 사용합니다.http://www.tecmint.com/ssh-passwordless-login-using-ssh-keygen-in-5-easy-steps/.

오늘은 두 번째 상자를 설정하고 동일한 방식으로 구성할 계획입니다. 내 개인 사용자 이름으로 작동하는 데 아무런 문제가 없었습니다. 그러나 서비스 계정에서는 여전히 작동하지 않으며 그 이유를 이해하지 못합니다. 서비스 계정을 사용하여 두 번째 상자에 SSH로 연결하려고 하면 비밀번호를 묻는 메시지가 표시된 다음 들어갈 수 있습니다.

서비스 계정의 공개 키가 두 상자 모두의 ~/.ssh/authorized_keys 파일에 삽입되어 있고 키 값이 두 상자 모두 동일한 것을 확인했습니다.

~/.ssh에 700의 권한이 있고 ~/.ssh/authorized_keys에 600의 권한이 있음을 확인했습니다(또한 640으로 테스트했는데 권장되는 내용을 읽은 것입니다). 서비스 계정 홈 디렉터리의 두 상자 모두에서 이를 확인했습니다.

두 상자에 있는 서비스 계정의 숫자 사용자 ID는 서로 다릅니다. 나는 그것이 어떤 차이를 가져올 것이라고 생각하지 않습니다.

또한 서비스 계정을 사용하여 두 상자 중 하나에 SSH로 접속한 후 서비스 계정을 사용하여 해당 상자에서 다른 상자로 SSH를 시도하면 비밀번호를 묻는 메시지가 표시된다는 사실도 확인했습니다.

"known_hosts"로 뭔가를 해야 합니까, 아니면 다른 일을 해야 합니까?

고쳐 쓰다:

제안한 대로 "-v"를 사용하여 ssh를 실행하고 ssh 시도의 출력을 확인했습니다.

다음은 일부 생략이 포함된 출력입니다.

%  ssh -v [email protected]
OpenSSH_7.2p2, OpenSSL 1.0.2h  3 May 2016
debug1: Reading configuration data /home/myuserid/.ssh/config
debug1: /home/myuserid/.ssh/config line 2: Applying options for *
debug1: Connecting to targethost.com [...] port 22.
debug1: Connection established.
debug1: identity file /home/myuserid/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1
debug1: match: OpenSSH_6.6.1 pat OpenSSH_6.6.1* compat 0x04000000
debug1: Authenticating to targethost.com:22 as 'serviceaccountid'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: [email protected]
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:...
debug1: Host 'targethost.com' is known and matches the ECDSA host key.
debug1: Found key in /home/myuserid/.ssh/known_hosts:18
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/myuserid/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /home/myuserid/.ssh/id_dsa
debug1: Trying private key: /home/myuserid/.ssh/id_ecdsa
debug1: Trying private key: /home/myuserid/.ssh/id_ed25519
debug1: Next authentication method: password
[email protected]'s password:

내가 이상하게 생각하는 점은 "다음 인증 방법: 공개 키" 뒤의 마지막 몇 줄에서 파일 경로 참조가 "/home/serviceaccountid" 대신 "/home/myuserid"라는 것입니다. 이것은 큰 단서인 것 같습니다.

답변1

내 계정을 사용하여 댓글을 추가할 수는 없지만 문제 해결에 도움이 되도록 더 많은 정보를 얻으려고 노력 중입니다.

로컬 컴퓨터 1대, 원격 컴퓨터 2대 등 세 대의 컴퓨터가 있는 것 같습니다. 그들은 각각 당신이 사용하는 두 개의 계정을 가지고 있습니까?

로컬 컴퓨터에 개인 및 서비스 계정이 있고 ssh service@remote-2로컬 컴퓨터의 개인 계정에서 실행하는 경우 서비스 계정이 아닌 로컬 개인 계정에 대한 SSH 키만 찾습니다. 원격 서비스 계정의 인증된 키 파일에 로컬 개인 공개 키를 추가한 경우.

내가 이상하게 생각하는 점은 "다음 인증 방법: 공개 키" 뒤의 마지막 몇 줄에서 파일 경로 참조가 "/home/serviceaccountid" 대신 "/home/myuserid"라는 것입니다. 이것은 큰 단서인 것 같습니다.

이것이 SSH가 로컬 계정에서 키를 찾는 방법입니다. 이는 ssh를 호출하는 계정의 홈 디렉터리여야 합니다. 경로를 서비스 계정의 홈 디렉터리로 지정하려면 서비스 계정에 로그인하고그 다음에SSH를 실행하세요.

관련 정보