web-dev-qa-db-ja.com

Putty:サーバーの取得でキーエラーが拒否されました

puttygen.exeを使用してキーペアを作成しました(クライアントはWindows 8です)。サーバー(Ubuntu 12.04.3 LTS)では、公開鍵を~/.ssh/authorized_keysに配置しました。公開鍵は次のとおりです。

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAopfM6RHOgnuc4Aftn3t4k5UIAT3StCAbn/vg/IMbphbXadshC+79sIlRq3P4zGzMjFTP4hKnzu6ehLV5lmj/qorq3SKT+bPO5Qrac3VbIlrGvuBFDDjP82I2Hwg3HzlsFTstqk++KToapaTYZ7jENEYyPl2wnzITJnt//+4U1o6juoXTKgdNE02hHnRZyHOV/bnkZyJJCEwJv5U0eXSThQnhmXtUxGT8U0HQNFiXfqIIVllhWiCnyrhhIaKz/CIJNAd2VmzyJzQtJtTQX8aWSNVrZju6Sv2/RncTNvsACdNgjjh/FH8PQXaep00jlJ3MOdsC8vz6VSPFbh6iKy1oLQ== rsa-key-20131231

だからそれは正しいです(1行、コメントなし、ssh-rsaで始まるなど)

.ssh dir許可レベルは700、authorized_keysファイル許可は600です。ログインしようとする実際のユーザーが所有するディレクトリとファイルの両方。

接続しようとすると、'server refused our key'が表示され、サーバーはパスワードを要求します。それで全部です。キーでログインしようとすると、/var/log/auth.logに何も記録されません。

私はあらゆるところを見てきましたが、すべての記事とヒントでは、ファイル/ディレクトリにchmod 600と700を設定し、キーを正しくフォーマットすることについて言及しています。 「キーを拒否しました」というエラーが表示されたまま、これをすべて実行しましたが、アイデアが不足しています。

74
PawelRoman

OK、私のキーに小さなタイプミスがありました。どうやら、ファイルに貼り付けるときに最初の文字が切り捨てられ、ssh-rsaではなくsh-rsaで始まったようです。

nrathathaus-あなたの答えは非常に役に立ちました、ありがとう、この答えはあなたにクレジットされています:)私はあなたが言ったようにsshd_confにこれを設定しました:

LogLevel DEBUG3

ログを見ると、sshdはキーを正しく読み取っていますが、IDが正しくないためにキーを拒否していることに気付きました。

52
PawelRoman

他の回答としていくつかの考えを追加することは役に立ちましたが、完全には適合しませんでした。

まず第一に、受け入れられた答えで述べたように、編集

/etc/ssh/sshd_config

ログレベルを設定します。

LogLevel DEBUG3

次に、認証を試み、失敗した場合はログファイルを探します。

/var/log/secure

探しているエラーがあります。

22
Ranty

私の場合、/ home/userの許可も0755から0700に変更する必要がありました。

13
Atif

私の場合、許可の問題です。

ログレベルをDEBUG3に変更すると、/var/log/secureに次の行が表示されます。

Authentication refused: bad ownership or modes for directory

Googleと私はこの投稿を見つけました:

https://www.daveperrett.com/articles/2010/09/14/ssh-authentication-refused/

chmod g-w /home/your_user
chmod 700 /home/your_user/.ssh
chmod 600 /home/your_user/.ssh/authorized_keys

基本的に、それは私に言う:

  • ユーザーのホームディレクトリのグループwパーミッションを取り除きます
  • 700 dirの.sshへのアクセス許可を変更します
  • 600ファイルのauthorized_keysへのアクセス許可を変更します。

そしてそれは動作します。

別のことは、ルートログインを有効にしても、rootが機能しないことです。別のユーザーを使用する方が良い

7
WesternGun

私が見つけた簡単な解決策は、authorized_keysファイルを隠し.sshディレクトリから移動して、システムのsshディレクトリに置くことでした。

/etc/ssh/keys/authorized_keys

これをやるとすぐに問題なく動作しました。

3
mrbronz

私は、このような答えを追加して、私のような、成功せずにインターネットを探し回った人を助けています。

あなたのホームフォルダは暗号化されるかもしれません。

または、「authorized_keys」ファイルがネストされているフォルダーについても同様です。男、それは私に多くの時間を節約できただろう。確認するには、実行してください

ls -A

暗号化ステータスを決定するディレクトリ。フォルダーに「.encryptfs」という名前のフォルダーが含まれている場合、その答えは、はい、そのフォルダーは暗号化されています。これにより、検証に必要な公開sshキーを含む「authorized_keys」ファイルにアクセスできなくなります。

これを修正するには、暗号化を含まないディレクトリツリーに「authorized_key」ファイルを配置します。

3
Mackie Messer

ありがとう!

LogLevel DEBUG3をありがとう(私の場合、CentOS 7はログが/var/log/secureにあります)

私の.ssh/authorized_keysモードは644であり、600ではなく、sshdname__はそれだけではいけないと感じていたので、ついにそのログファイルを読んでいることに気付きました!

3
Sxilderik

windows Server 2008 R2でも同じ問題があり、解決するために多くのことを検討し、最後に次のことでそれをしました:

テキストパッドまたはその他のテキストエディターでC:\ Program Files(x86)\ OpenSSH\etc\sshd_configを開きます。

次の行からコメントを削除します。削除後は次のようになります。

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys

保存して、今すぐ秘密鍵でログインしてみてください。楽しむ。

3
Ravi Anand

Nrathausとデバッグレベルの/var/log/auth.log調査のおかげで、次のことがわかりました。

もう1つの理由は、ホームディレクトリのアクセス許可が755と異なる場合があることです。

2
Intel83

今日、この問題に遭遇しました。私の問題は、ファイルから公開鍵をコピーするときに、改行文字も含まれることです。 vimで ":set list"を使用して、隠されたすべての新しい行を表示し、最後の行を除くすべての新しい行を削除することを確認できます。また、最初にキーに「ssh-rsa」がありませんでした。あなたもそれを持っていることを確認してください。

2
hyeuc

私の場合、Centos6.6でSELinuxを無効にして動作させる必要がありました:)

/ etc/selinux/configを編集して以下を設定し、ホストを再起動します。

selinux=disabled

ところで...私は問題を特定するためにLogLevel = DEBUG3を設定しなければならなかったことに言及するのを忘れました。

1
sagaya

Windows 8.1を実行していると、server refused our keyの問題が発生しました。

ガイドに従う: https://winscp.net/eng/docs/guide_windows_openssh_server Windowsログインusernameおよびpasswordを使用して簡単に接続できました。ただし、usernameprivate keyと組み合わせて認証すると、応答はserver refused our keyでした。

公開キーを使用して動作させるには、ファイルの権限に委ねられました:C:\ProgramData\ssh\administrators_authorized_keys

これは役立つページです。 https://github.com/PowerShell/Win32-OpenSSH/wiki/Troubleshooting-Steps

2つのOpenSSHサービスを停止してから、command Promptadmin permissionsを開きます。次に、実行します:C:\OpenSSH-Win32>c:\OpenSSH-Win32\sshd.exe -ddd

注:exeへのフルパスを指定しないと、sshdがエラーを表示します。これにより、1回限りの接続リスナーが作成されます。 -dddは冗長レベル3です。

接続を確立した後、ログをスキャンすると明らかになりました:

debug1: trying public key file __PROGRAMDATA__/ssh/administrators_authorized_keys
debug3: Failed to open file:C:/ProgramData/ssh/administrators_authorized_keys error:2
debug1: Could not open authorized keys '__PROGRAMDATA__/ssh/administrators_authorized_keys':
        No such file or directory

ファイルを作成する必要がありました:C:\ProgramData\ssh\administrators_authorized_keysそしてpublic keyテキストをその中にコピーします。例:ssh-rsa AAAA................MmpfXUCj rsa-key-20190505そして、ファイルを保存します。 BOMを使用して、ファイルをUTF-8として保存しました。 ANSIをテストしませんでした。

次に、ログに次のようなワンタイムコマンドラインを再度実行します。

debug1: trying public key file __PROGRAMDATA__/ssh/administrators_authorized_keys
debug3: Bad permissions. Try removing permissions for user: S-1-5-11 on file C:/ProgramData/ssh/administrators_authorized_keys.
        Authentication refused.

S-1-5-11は、Systemに付けられた名前です。

Bad permissionsを修正するには、administrators_authorized_keysファイルを右クリックし、Security Tabに移動して、Advancedボタンをクリックし、継承された権限を削除します。次に、Windowsログインユーザー名を除くすべてのGroup or user names:を削除します。例:YourMachineName\usernameそのusernameのアクセス許可はRead Allowである必要があり、Write Denyその他はすべてチェックされていません。ファイルの所有者もYourMachineName\usernameでなければなりません

これにより問題が修正されました。

その他の便利なリンク:

次からOpenSSH-Win32.Zipをダウンロードします。 https://github.com/PowerShell/Win32-OpenSSH/releases

WinSCPnet.dllを使用してOpenSSHサーバーに接続するC#の例: https://winscp.net/eng/docs/library#csharp

以下は、WinSCPnet.dllを使用して接続を確立するためのコードスニペットです。

static void WinSCPTest() {
    SessionOptions ops = new SessionOptions {
        Protocol = Protocol.Sftp, 
        PortNumber = 22,
        HostName = "192.168.1.188", 
        UserName = "user123",
        //Password = "Password1",
        SshHostKeyFingerprint = @"ssh-rsa 2048 qu0f........................ddowUUXA="
    };

    ops.SshPrivateKeyPath = @"C:\temp\rsa-key-20190505.ppk";

    using (Session session = new Session()) {
        session.Open(ops);
        MessageBox.Show("success");
    }
}

SshHostKeyFingerprintおよびSshPrivateKeyPathを独自の値に置き換えます。

編集:administrators_authorized_keysファイルのパーミッションのスクリーンショットを追加しました: enter image description here

OpenSSH SSH Serverがサービスとして実行されている場合、Systemのみに許可が必要です。ただし、コマンドプロンプトからsshd.exeを実行する場合、現在のユーザーのみがリストされます(読み取り許可、書き込み拒否)。

1
Loathing

Solarisでも同じエラーが発生しましたが、/ var/adm/splunk-auth.logで次のことがわかりました。

sshd: [auth.debug] debug1: PAM conv function returns PAM_SUCCESS
sshd: [auth.notice] Excessive (3) login failures for weblogic: locking account.
sshd: [auth.debug] ldap pam_sm_authenticate(sshd-kbdint weblogic), flags = 1
sshd: [auth.info] Keyboard-interactive (PAM) userauth failed[9] while authenticating: Authentication failed

/ etc/shadowでアカウントがロックされました:

weblogic:*LK*UP:16447::::::3

「* LK *」部分を削除しました:

weblogic:UP:16447::::::3

そして、いつものようにauthorized_keysでsshを使用できます。

1
Bruno Ruess

私の場合、それは(/etc/ssh/sshd_config)が原因でした。

PermitRootLogin no

yesに変更し、サービスを再起動して、正常に取得しました。

1
Alex Fortuna

Windows Serverからこのエラーを受け取った人については、この同じエラーを受け取りましたが、これはユーザーアカウントの問題でした。多くの組織では、管理者のグループポリシーにより、SSHサーバーと接続のセットアップが許可されない場合があります。このタイプのセットアップでは、ローカル管理者アカウントからこれを行う必要があります。公開鍵にタイプミスがないことを確認したら、調査する価値があるかもしれません。

1
Andrew Campbell

私はこの問題を解決しました。puttygenはサードパーティのソフトウェアであり、それによって生成されたsshキーは直接使用されなかったため、いくつかの変更を加える必要があります。たとえば、次のようになります

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20170502"
AAAAB3NzaC1yc2EAAAABJQAAAQEAr4Ffd3LD1pa7KVSBDU+lq0M7vNvLp6TewkP7
*******C4eq1cdJACBPyjqUCoz00r+LqkGA6sIFGooeVuUXTOxbYULuNQ==
---- END SSH2 PUBLIC KEY ---- 

途中の一部のアルファベットを*に置き換えて省略します。そうでない場合、StackOverflowはコード形式が間違っていると教えてくれました。投稿させないでください。

これはputtygenによって生成された私のsshキーです。これに変更する必要があります

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAr4Ffd3LD1pa7KVSBDU+lq0M7vNvLp6TewkP7wfvKGWWR7wxA8GEXJsM01FQw5hYWbNF0CDI7nCMXDUEDOzO1xKtNoaidlLA0qGl67bHaF5t+0mE+dZBGqK7jG9L8/KU/b66/tuZnqFqBjLkT+lS8MDo1okJOScuLSilk9oT5ZiqxsD24sdEcUE62S8Qwu7roVEAWU3hHNpnMK+1szlPBCVpbjcQTdiv1MjsOHJXY2PWx6DAIBii+/N+IdGzoFdhq+Yo/RGWdr1Zw/LSwqKDq1SmrpToW9uWVdAxeC4eq1cdJACBPyjqUCoz00r+LqkGA6sIFGooeVuUXTOxbYULuNQ== yourname@hostname

私の場合、次のようなコメントを削除しました。

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20170502"
---- END SSH2 PUBLIC KEY ----

そして、先頭にssh-rsaを追加し、最後にyourname@hostnameを追加します。 :最後にdelete==ではなく、「yourname」と「hostname」を変更する必要があります。私の場合、uaskh@mycomputerです。yournameはvpsにログインすることです。完了したら、~/.ssh/authorized_keysでuaskhのhomecat public-key >> ~/.ssh/authorized_keysに公開キーをアップロードできます。その後、Sudo chmod 700 ~/.sshSudo chmod 600 ~/.ssh/authorized_keysを変更し、/ etc/ssh/sshd_config、RSAAuthentication yesPubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keysを変更する必要があります私の努力を試みます、ありがとう!

0
toffee

Sshdがauthorized_keys2からのみ読み取るこの問題があります。

ファイルをコピーまたは名前変更すると、問題が解決しました。

cd  ~/.ssh
Sudo cat authorized_keys >> authorized_keys2

追伸WindowsのPuTTYを使用しており、キーペアの生成にPuTTyKeygenを使用しています。

0
Chad Liu

私の場合、nfsのホームは777でしたが、750である必要がありました。これで問題が修正されました。

0
dghadge

Mobaxtermを介してログオンしようとすると、同様の問題に直面していました。秘密鍵は、puttygenを介して生成されました。私の場合、キーの再生成が役立ちました。

0
Prada

ルートマウントを修正する手順(ec2-userフォルダーと認証キーファイルでアクセス許可を変更したため、この手順に従いました)このプロセスは、ペンドライブの取り外しと接続に似ています。

以下に遭遇する可能性のある他のシナリオがいくつかあります-

  1. SSH秘密鍵を使用していますが、対応する公開鍵はauthorized_keysファイルにありません。
  2. Authorized_keysファイルに対する権限がありません。
  3. .sshフォルダーに対するアクセス許可がありません。
  4. Authorized_keysファイルまたは.sshフォルダーの名前が正しくありません。
  5. Authorized_keysファイルまたは.sshフォルダーが削除されました。

それらを修正する手順

  • 問題のあるEc2インスタンスを停止します
  • ルートボリューム(/ dev/sda1)を切断します
  • Ec2インスタンスを作成するか、実行中のインスタンスを使用します
  • 切り離されたボリューム(/ dev/sdvf)を新しいec2インスタンスにマウントします

手順を実行して新しいec2にログインした後

  • Lsblkコマンド-使用可能なすべてのマウントを一覧表示します
  • 問題のあるインスタンスからアンマウントするマウント値を選択します
  • Ec2-userで「Sudo mount/dev/mapper/rootvg-home/mnt」を実行しますSudo mount /dev/mapper/rootvg-home /mnt
  • 次に、ディレクトリを/ mntに変更します
  • 必要な変更をすべて行います

現在、直面している問題でボリュームを修正しました。主にユーザー許可の問題である可能性があります-Umount/mntでアンマウントします-コンソールに移動し、新しいインスタンスに接続されたボリュームをポイントしデタッチ-デタッチ後、/ dev/sda1として新しいボリュームにアタッチします

これで、正常にログインできるはずです

0

amazon Linuxマシンを使用している場合は、ec2-userとしてログインします

0
sachin_ur

キーを確認してください。これは今日のrsa(id_rsa.pub)キーであり、dss(id_dsa.pub)キーではなく、puttygen 0.70を使用し、生成するキーのタイプでRSAを選択し、ホスト〜/の公開キーを置き換えます。 ssh/authorized_keys

0
Don Matteo

Cpanelを使用する場合、キーが認証されているかどうかを確認できます

SSHアクセス>>公開キー>>管理>>認証または認証解除。

0
Tomás Cot

私のために働くのはそれです:

  • Ec2インスタンスを停止しました
  • ボリュームをデタッチします
  • 同じキーを使用して古いインスタンスでボリュームをアタッチし、SSHを実行できました
  • 一時フォルダにボリュームをマウントします
  • ディレクトリmount_point/home/ec2-user/.ssh/authorized_keys 内のファイルをチェックしました
    • 理想的には、このファイルにはキー情報が必要ですが、私にとってはこのファイルは空でした
  • 古いインスタンスauthorized_keysファイルを新しくマウントされたボリュームにコピーしました
  • デバイスをアンマウントします
  • 元のec2インスタンスに再接続します
  • それを開始し、ヘルスチェックに合格させます

今回は私のために動作します。しかし、インスタンスが起動されたときに最初にキーファイル情報を持たない理由はわかりません。このリンクも確認してください https://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshootingInstancesConnectingMindTerm

0
Sohaib Mustafa

PUTTYgenファイルをpsftpで使用していますが、クライアント用の新しいキーを作成する必要があるときに、Windowsサーバーでこの問題が発生しました。 private_key_name。ppkファイルとopen_ssh.txtファイルは、接続が機能するために同じディレクトリに存在する必要があります。

0
Geir Borse

/var/log/secureでこのエラーが発生した場合

エラー:key_read:key_from_blob AA
AAB3NzaC1yc2EAAAABJQAAAQEAoo3PFwX04NFG + rKz93l7em1BsUBzjHPMsswD

.ppkファイルを表示するときにputtgenを使用してキーを生成した場合、キーにはスペースがあります。これは次のようになります。

AAAAB3NzaC1yc2EAAAABJQAAAQEAoo3PFwX04NFG+rKz93l7em1BsUBzjHPMsswD
al74MLaJyhQD0pE23NS1izahbo1sJGnSJu2VJ//zxidSsba6xa6OvmeiKTwCz0E5
GMefdGVdpdbTlv99qjBl1+Nw1tDnHIC0+v9XmeZERQfCds9Kp1UivfReoYImntBC
gLtNyqRYrSu8csJCt7E1oY8QK6WP1vfYgAQ2taGyS9+g7FHyyf5VY2vH3oWzzbqz
xjsSLAv3zEQSm1LzSw9Pvc8iwasFyUMBOPj31CKQYTXyX8KpJTr0Zb7oqMauBE5L
VwxZhlcJHbj0FsMbF/+GRjvgexymCi3bHmwGQ6FEADNd0RkhdQ==

貼り付けようとすると、キーの読み取り中にエラーが発生するため、キーを編集して1行にしてから試してください

これは何かのように見えるはずです

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAoo3PFwX04NFG+rKz93l7em1BsUBzjHPMsswDal74MLaJyhQD0pE23NS1izahbo1sJGnSJu2VJ//zxidSsba6xa6OvmeiKTwCz0E5GMefdGVdpdbTlv99qjBl1+Nw1tDnHIC0+v9XmeZERQfCds9Kp1UivfReoYImntBCgLtNyqRYrSu8csJCt7E1oY8QK6WP1vfYgAQ2taGyS9+g7FHyyf5VY2vH3oWzzbqzxjsSLAv3zEQSm1LzSw9Pvc8iwasFyUMBOPj31CKQYTXyX8KpJTr0Zb7oqMauBE5LVwxZhlcJHbj0FsMbF/+GRjvgexymCi3bHmwGQ6FEADNd0RkhdQ== username@domainname

0
Sandeep Chhabra

私の場合、問題はこのようなものでした。sshキーの生成中に、キーのデフォルトのディレクトリを意図的に変更しました。場所〜/ .ssh/authorized_keysを使用する代わりに、~/home/user/folder1/.ssh/authorized_keysを使用することを選択しました。これらの変更が機能するために、このファイル/etc/ssh/sshd_configの新しい場所について同じ変更を行うことになっています。しかし、これに気付くまで、ホームフォルダーの許可を700に、.sshディレクトリーを600に設定するなど、他の人から提案されたいくつかのソリューションを既に試していました。

0
jstMusa

私の経験として、Linux側からは生成せず、PuTTYから鍵を生成することをお勧めします。キーが古いPEM形式になるためです。とにかく、ちょうど私の提案。私は以下の手順を実行し、私と私のチームでうまく働きました。

  1. ローカルでPuTTYGen.exeを使用してキーペアを生成します(タイプ:RSA、長さ:2048ビット)。

  2. ローカルに「id_rsa.ppk/id_rsa.pub」ファイルとして秘密/公開キーを保存します。

  3. ローカルで「authorized_keys」ファイルを作成し、「id_rsa.pub」に公開キーを入力して「authorized_keys 」)。コンテンツは「ssh-rsa」および1行のみで始まる必要があることを忘れないでください

enter image description here

  1. WinScp(またはPuTTYコマンド)を使用して、「authorized_keys&id_rsa.pub」をローカルからlinux-user-home "/ home/$ USER/.ssh /」。

enter image description here

  1. 次のコマンドを実行します。

    chmod 700 .ssh

    chmod 600 .ssh/authorized_keys

    chown $ USER:$ USER .ssh -R

  2. PuTTY.exeプロファイルで秘密鍵「id_rsa.ppk」をロードして接続設定をテストし、「開く」をクリックします(ある場合はパスフレーズを入力します)。

enter image description here

enter image description here

0
m.nguyencntt