web-dev-qa-db-ja.com

ssh-copy-id-権限が拒否されました(公開鍵)

仮想マシンを持つコンピューターにあるmysqlサーバーへのsshトンネルをセットアップしたい。また、マシンが再起動された場合、トンネルは機能する必要があります。

AがLinuxソフトウェアを搭載したコンピュータだとしましょう。 B-コンピューターAの仮想マシン.

MySQLはBです。

C-コンピュータAの仮想マシンで、BのMySQLに接続したい。

今この記事で: http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id /

公開鍵をリモートサーバーにコピーしようとしています。コンピューターAにコピーする必要があると思います。

ssh-copy-id -i id_rsa.pub.bak [user]@[IP of A] -p [port of A]
Enter passphrase for key '/home/[user]/.ssh/id_rsa':
Permission denied (publickey).

次に、id_rsa.pub.bakファイルのパスフレーズを入力してみました。それは否定されました。

次に、/ home/[user] /。ssh/id_rsaのキーを使用していることを確認します。これは、コピーしようとしている公開キーとは異なります。もちろん、秘密キーは異なりますが、別の公開キーをコピーします秘密鍵。そこでパスフレーズを使ってみました。また拒否されました。

パスフレーズが拒否される理由をデバッグするにはどうすればよいですか?

更新

コメントに基づいて、id_rsa.pubという名前の新しいパブリックファイルを作成しました。

実行してもエラーが発生します。

ssh-copy-id -i id_rsa.pub [Host and port] -vvv
Enter passphrase for key '/home/[user]/.ssh/id_rsa':
Permission denied (publickey).

更新

Aコンピュータの.sshフォルダとauthorized_keysファイルの権限を確認しました-コメントはそれらが良いと言うように、それらは700と600です。

更新

コンピューターでパスワード認証yesを設定して、サービスを再起動しようとしました。回答によると再起動が機能しなかったため、sshdが認識されなかったため、次のように再起動しました。

Sudo /etc/init.d/ssh restart

次に、Cマシンでもう一度試して、Aマシンにコピーしました。

ssh-copy-id -i id_rsa.pub [user@Host] -p [port] -v

そしてまだ同じ:

Enter passphrase for key '/home/[user]/.ssh/id_rsa':
Permission denied (publickey).

手動でキーをauthorized_keysにコピーしようとすると、コピーしたいものと同じ公開鍵がすでに存在していることがわかります。私は同僚に尋ねたところ、彼はそれをコピーしなかったと述べました。だからどうすればそこにあるのかわかりません。

OK、そこにあればそれは良いことですが、そこに留まることで、パスフレーズを入力せずにsshに接続することはできません。しかし、パスフレーズの入力に接続できました。ですから、明らかに何かがここでまだ間違っています。そして、私がコピーしようとしているキーは空のパスフレーズです。 sshで接続したとき-空ではないパスフレーズを入力しました。

同じ公開鍵は、空のパスフレーズと空でないパスフレーズを受け入れることができません。しかし、なぜ私がアップロードしようとしている公開鍵が、パスフレーズが異なる場合、authorized_keysファイルにあるものと同じであるのですか?私はすべての文字をチェックしませんでしたが、キーが非常に似ているため、パスフレーズが異なる場合でも、最初と最後が同じになるとは考えられません。

31
Darius.V

ようやく問題が見つかりました。

実際、公開鍵をコピーする必要はありませんでした。 同じ公開鍵が両方の秘密鍵用です-パスフレーズありとパスフレーズなし。私はパスフレーズなしの秘密鍵を持っていると思っていましたが、実際には持っていませんでした。パスフレーズのない.ppkしかありませんでした。それはコミュニケーションの失敗でした。同僚がパスフレーズなしで秘密鍵を作成したので、パスフレーズなしでsshを使用してログインできるようになりました。パスフレーズなしで使うのは悪いことだと私は読んだが、同僚は大丈夫だと言っている。再起動時にシェルスクリプトを実行する必要があるため、パスフレーズなしで必要でした-コンピューターの再起動時にautosshを起動したいのですが。

つまり、今回は一種の解決策です-パスフレーズなしでログインしたい場合-秘密鍵にパスフレーズがないかどうかを確認してください。

5
Darius.V

キーをコピーするには実際にログインする必要があります。リモートマシンにアクセスすることはできません(無効なキーとパスワードによる認証は無効になっています)。

/ etc/ssh/sshd_configでpasswd認証を再度有効にします。

PasswordAuthentication yes

次に、サービスを再起動します。

service sshd restart

公開鍵をコピーします。

ssh-copy-id -i ~/.ssh/id_rsa.pub USER@Host -p PORT
[Enter user password]

もう一度ログインしてみてください。パスワードは必要ありません。

次に、パスワード認証を無効にします。

27
Nabil Bourenane

Permission denied (publickey)は、「認証方法として公開鍵のみを受け入れるので、もういかない」と言っているリモートSSHサーバーです。

それが主な課題です。リモートシステムにアクセスすることです。それができたら、キーをアップロードできます。

  • ssh-copy-idを使用する-たとえば、古いキーを置き換える場合は、別のキーを指定できます。
  • リモートユーザーの~/.ssh/authorized_keysを編集して、キーを手動で追加します。
12
Oli