私はこの.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_rsa
NASの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にすでに存在するキーペアを使用する必要があります。または、そこで新しいペアを作成してください。