Docker의 루트가 아닌 사용자를 위한 비밀번호 없는 SSH

Docker의 루트가 아닌 사용자를 위한 비밀번호 없는 SSH

루트가 아닌 사용자를 위해 Docker 노드 간에 비밀번호 없는 SSH를 설정할 때 이전에 본 적이 없는 흥미로운 문제에 직면했습니다. 단계를 설정하기 위해 수행된 작업은 다음과 같습니다. 노드 1의 루트 사용자의 경우:

ssh-keygen -t rsa ...
ssh-copy-id node2

이제 비밀번호 없이 node1 -> node2에서 ssh를 사용할 수 있습니다.

다른 사용자(예: 마크)를 사용합니다. 위와 동일한 단계를 수행하여 키를 생성하고 node2에 복사해도 여전히 프롬프트가 표시됩니다. 진단(ssh -v node2)을 켜고 다음을 얻었습니다.

[mark@node1 ~]$ ssh -v node2
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to node2 [172.17.0.3] port 22.
debug1: Connection established.
debug1: identity file /root/.ssh/id_rsa type -1
debug1: identity file /root/.ssh/id_rsa-cert type -1
... more stuff
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/id_rsa
debug1: Next authentication method: password
...

여기 다른 게시물을 제외하고는 이상하다고 생각합니다(https://stackoverflow.com/questions/18136389/using-ssh-keys-inside-docker-container) 포스터 중 하나는 다음과 같은 설명을 남겼습니다. "docker는 sudo로 실행된다는 점을 기억하세요(그렇지 않은 경우). 이 경우 루트 SSH 키를 사용하게 됩니다." 이것이 내 문제의 본질일지도 모른다고 생각되어 내 관심을 끌었습니다.

거기에 후속 질문을 게시할 수 없었기 때문에 여기에 질문을 재구성해야겠다고 생각했습니다. Docker 문서에서 이에 대한 자세한 내용을 찾을 수 없지만 루트가 아닌 사용자에 대한 암호 없는 SSH의 동작에 영향을 미치는 것 같습니다.

누구든지 제공할 수 있는 명확성에 감사드립니다.

답변1

문제를 해결하고 무슨 일이 일어나고 있는지 이해하려면 ssh -i /home/mark/.ssh/id_rsa...마크의 키를 사용할 수 있는지, 그리고 그렇게 할 때 작동하는지 확인하는 것이 좋습니다(또는 경로가 무엇이든). 그리고 테스트로 루트 키의 이름을 바꿔서 어떤 일을 하는지 살펴보세요!

또한 (-i를 잊어버리고) ~/.ssh/config 파일이 있는지 확인하세요. 만약 그렇다면 그 안에 아무것도 없습니다. 그리고 IdentityFile ____/etc/ssh_config에 루트 키를 지정하는 줄 이 있는지 확인하세요 .

관련 정보