SSH: 지정된 IdentityFile이 사용되지 않아 권한이 거부되었습니다.

SSH: 지정된 IdentityFile이 사용되지 않아 권한이 거부되었습니다.

나는 이 .ssh/config를 사용하고 있습니다:

Host myserver
    HostName 12.34.67.89
    User anyuser
    IdentityFile /root/.ssh/anything_rsa

그러나 실행 하면 오류가 ssh myserver반환됩니다 .Permission denied (publickey)

root/.ssh/anything_rsa주어진 ID 파일( )을 사용하면 어떨까요? 대신에 사용하는 것 같습니다/root/.ssh/id_rsa

OpenSSH_7.0p1, OpenSSL 1.0.1r  28 Jan 2016
debug1: Connecting to myserver [12.34.67.89] port 22.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: identity file /root/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.0
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
debug1: match: OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 pat OpenSSH* compat 0x04000000
debug1: Authenticating to myserver:22 as 'admin'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client [email protected] <implicit> none
debug1: kex: client->server [email protected] <implicit> none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: XXXXX
debug1: Host 'myserver' is known and matches the ECDSA host key.
debug1: Found key in /root/.ssh/known_hosts:4
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
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /root/.ssh/id_rsa
debug1: Authentications that can continue: publickey
debug1: Trying private key: /root/.ssh/id_dsa
debug1: Trying private key: /root/.ssh/id_ecdsa
debug1: Trying private key: /root/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).

달리기 ssh -v -i /root/.ssh/anything_rsa -l anyuser myserver작품. 그래서 설정 파일이 제대로 사용되지 않는 것 같은데... 전혀 이해가 안 되네요...

답변1

귀하의 게시물 아래 댓글은 이것이 /root/.ssh다른 디렉토리에 대한 심볼릭 링크임을 나타냅니다. 나는 심볼릭 링크된 .ssh 디렉토리를 사용할 이유가 없었지만 ssh가 문제의 사용자가 소유하지 않거나 그룹 또는 누구나 읽을 수 있는 .ssh 디렉토리를 완전히 무시할 것이라고 확신합니다. IOW, chown root소유권 과 권한이 있어야 합니다 chmod 0700. 내 직감은 심볼릭 링크( /etc/config/ssh)의 대상 디렉터리가 루트에 속하지 않거나 0700이 아니기 때문에 ssh가 구성 파일을 무시하고 기본 IdentityFile 이름 id_rsa를 사용한다는 것입니다.

업데이트: 이 기사 아래에 있는 귀하의 의견은 루트의 .ssh 디렉토리를 참조하고 있지만 IdentityFile실제로는 루트로 실행되고 있지 않음을 나타냅니다. 다음 섹션은 귀하의 사용자 이름을 반영하도록 편집되었습니다 admin.

문제를 해결하려면 다음을 시도해 보세요.

cd ~admin
mkdir .ssh
chmod 700 .ssh
cp -RLp /etc/config/ssh/* .ssh
chown -R admin .ssh

그런 다음 다시 시도해 보세요.

답변2

IdentitiesOnly yes이를 귀하의 것 ~/.ssh/config(또는 전역적으로 )에 설정 해야 합니다 /etc/ssh/ssh_config. 그렇지 않으면 사용 가능한 다른 모든 ID도 시도됩니다.

명령줄에서 전달되지 않은 경우 로 IdentitiesOnly yes정의된 ID IdentityFile(및 로 정의된 인증서 ) 만 사용하십시오 .CertificateFile

Host myserver
    HostName 12.34.67.89
    User anyuser
    IdentitiesOnly yes
    IdentityFile /root/.ssh/anything_rsa

답변3

나와 같은 누군가가 QNAP NAS에서 Linux 시스템으로 SSH를 설정하려고 이 스레드에 왔다면 대답은 다음과 같습니다.

제 경우에는 id_rsaNAS의 admin( )에서 생성했는데 /share/homes/admin/.ssh/id_rsa, 이것이 기본값입니다 sudo. 다음 명령을 사용하여 Linux 호스트에 연결하려고 합니다.

ssh root@hostname

오류를 반환합니다. 하지만

ssh -i /share/homes/admin/.ssh/id_rsa root@hostname

일하다.

/root/.ssh/따라서 원격 호스트의 루트 사용자에 연결하려면 관리자로부터 새 키를 생성할 필요가 없으며 NAS에 이미 존재하는 키 쌍을 사용해야 합니다 . 아니면 거기서 새로운 쌍을 생성하세요.

관련 정보