두 대의 Mac(mini 및 bigmac)에서 비밀번호 없는 로그인을 설정하려고 합니다. 한쪽에만 영향을 미치고 다른 쪽에는 영향을 미치지 않습니다. 각 머신에서:
"ssh-keygen -t rsa"를 사용하여 id_rsa 및 id_rsa.pub를 생성했습니다(비밀번호를 묻는 메시지가 나타나면 Enter 키를 누르세요). 생성된 파일을 ~/.ssh로 mv한 다음 scp id_rsa.pub를 ~/.ssh/authorized_keys로 다른 Mac으로 이동합니다.
"mini"에서 "bigmac"까지 ssh의 경우 비밀번호 없는 로그인이 작동합니다. "bigmac"에서 "mini"로 ssh를 시도하면 비밀번호를 묻는 메시지가 나타납니다.
bigmac:~ jedevnull$ cd .ssh
bigmac:.ssh jedevnull$ ls
authorized_keys id_rsa id_rsa.pub known_hosts
bigmac:.ssh jedevnull$ ssh -v mini
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to mini [192.168.1.20] port 22.
debug1: Connection established.
debug1: identity file /Users/jedevnull/.ssh/id_rsa type 1
debug1: identity file /Users/jedevnull/.ssh/id_rsa-cert type -1
debug1: identity file /Users/jedevnull/.ssh/id_dsa type -1
debug1: identity file /Users/jedevnull/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.9
debug1: match: OpenSSH_6.9 pat OpenSSH*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr [email protected] none
debug1: kex: client->server aes128-ctr [email protected] none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<2048<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 0d:2e:de:45:00:ff:9b:ff:96:c5:f6:bd:c6:6a:b0:ec
debug1: Host 'mini' is known and matches the RSA host key.
debug1: Found key in /Users/jedevnull/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/jedevnull/.ssh/id_rsa
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Trying private key: /Users/jedevnull/.ssh/id_dsa
debug1: Next authentication method: keyboard-interactive
Password:
Bigmac의 id_rsa.pub와 mini의authorized_keys는 동일합니다.
답변1
문제의 원인을 찾으려면 연결의 서버 및 클라이언트 측에서 디버그 메시지를 보는 것이 도움이 될 수 있습니다. 서버의 옵션을 -d
사용하면 개별 연결(또는 거부)에 대해 자세한 디버그 메시지를 터미널에 표시할 수 있습니다. 예를 들어, 서버 측에서 다음을 실행합니다.
/usr/sbin/sshd -d -p2222
(비표준 포트에서 실행되므로 일반 포트를 방해하지 않음 sshd
) 및 클라이언트 측에서
ssh -v -p2222 ${SERVER_IP}
상세 사항은,
/usr/sbin/sshd -dd -p2222
ssh -vv -p2222 ${SERVER_IP}
답변2
SSH 서비스(ssh 명령이 아니라 sshd)를 사용하는 모든 n*x 시스템은 액세스 가능한 기존 계정과 해당 계정(=user)에 대한 유효한 공개 키가 포함된 파일에 의존합니다.
~/.ssh 폴더와 키 자체는 모두 해당 특정 사용자만 액세스할 수 있습니다. 키는 chmod
600, 폴더는 700이어야 사용자 외에는 누구도 접근할 수 없습니다. 폴더를 직접 읽을 수 없으므로 600으로 설정하지 않도록 주의하세요. Authorized_keys 파일과 동일: 600을 권장합니다.
키가 포함된 파일이 요청한 제한 사항과 일치하지 않으면(본인만 액세스할 수 있음) SSH 로그인이 실패할 가능성이 높습니다.
그런데 (약간 벗어난 주제): 이 경우 @jocala가 쌍을 생성하여 두 시스템 모두에서 사용할 수 있습니다. 다양한 고객의 여러 컴퓨터를 사용하는 경우 여러 개의 키를 보유하는 것이 좋습니다. 사용할 키를 결정하는 데 도움이 되도록 항상 지정된 키를 사용하는 대신 ~/.shh/config 파일을 만들고 채울 수 있습니다.ssh -i [path_to_key] [email protected]