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/したがって、リモートホストのrootユーザーに接続するには、管理者から新しいキーを生成する必要はなく、NASにすでに存在するキーペアを使用する必要があります。または、そこで新しいペアを作成してください。

関連情報