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を設定し、キーを正しくフォーマットすることについて言及しています。 「キーを拒否しました」というエラーが表示されたまま、これをすべて実行しましたが、アイデアが不足しています。
OK、私のキーに小さなタイプミスがありました。どうやら、ファイルに貼り付けるときに最初の文字が切り捨てられ、ssh-rsaではなくsh-rsaで始まったようです。
nrathathaus-あなたの答えは非常に役に立ちました、ありがとう、この答えはあなたにクレジットされています:)私はあなたが言ったようにsshd_confにこれを設定しました:
LogLevel DEBUG3
ログを見ると、sshdはキーを正しく読み取っていますが、IDが正しくないためにキーを拒否していることに気付きました。
他の回答としていくつかの考えを追加することは役に立ちましたが、完全には適合しませんでした。
まず第一に、受け入れられた答えで述べたように、編集
/etc/ssh/sshd_config
ログレベルを設定します。
LogLevel DEBUG3
次に、認証を試み、失敗した場合はログファイルを探します。
/var/log/secure
探しているエラーがあります。
私の場合、/ home/userの許可も0755から0700に変更する必要がありました。
私の場合、許可の問題です。
ログレベルを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
が機能しないことです。別のユーザーを使用する方が良い
私が見つけた簡単な解決策は、authorized_keys
ファイルを隠し.sshディレクトリから移動して、システムのsshディレクトリに置くことでした。
/etc/ssh/keys/authorized_keys
これをやるとすぐに問題なく動作しました。
私は、このような答えを追加して、私のような、成功せずにインターネットを探し回った人を助けています。
あなたのホームフォルダは暗号化されるかもしれません。
または、「authorized_keys」ファイルがネストされているフォルダーについても同様です。男、それは私に多くの時間を節約できただろう。確認するには、実行してください
ls -A
暗号化ステータスを決定するディレクトリ。フォルダーに「.encryptfs」という名前のフォルダーが含まれている場合、その答えは、はい、そのフォルダーは暗号化されています。これにより、検証に必要な公開sshキーを含む「authorized_keys」ファイルにアクセスできなくなります。
これを修正するには、暗号化を含まないディレクトリツリーに「authorized_key」ファイルを配置します。
ありがとう!
LogLevel DEBUG3
をありがとう(私の場合、CentOS 7
はログが/var/log/secure
にあります)
私の.ssh/authorized_keys
モードは644
であり、600
ではなく、sshd
name__はそれだけではいけないと感じていたので、ついにそのログファイルを読んでいることに気付きました!
windows Server 2008 R2でも同じ問題があり、解決するために多くのことを検討し、最後に次のことでそれをしました:
テキストパッドまたはその他のテキストエディターでC:\ Program Files(x86)\ OpenSSH\etc\sshd_configを開きます。
次の行からコメントを削除します。削除後は次のようになります。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
保存して、今すぐ秘密鍵でログインしてみてください。楽しむ。
Nrathausとデバッグレベルの/var/log/auth.log
調査のおかげで、次のことがわかりました。
もう1つの理由は、ホームディレクトリのアクセス許可が755と異なる場合があることです。
今日、この問題に遭遇しました。私の問題は、ファイルから公開鍵をコピーするときに、改行文字も含まれることです。 vimで ":set list"を使用して、隠されたすべての新しい行を表示し、最後の行を除くすべての新しい行を削除することを確認できます。また、最初にキーに「ssh-rsa」がありませんでした。あなたもそれを持っていることを確認してください。
私の場合、Centos6.6でSELinuxを無効にして動作させる必要がありました:)
/ etc/selinux/configを編集して以下を設定し、ホストを再起動します。
selinux=disabled
ところで...私は問題を特定するためにLogLevel = DEBUG3を設定しなければならなかったことに言及するのを忘れました。
Windows 8.1を実行していると、server refused our key
の問題が発生しました。
ガイドに従う: https://winscp.net/eng/docs/guide_windows_openssh_server Windowsログインusername
およびpassword
を使用して簡単に接続できました。ただし、username
をprivate key
と組み合わせて認証すると、応答はserver refused our key
でした。
公開キーを使用して動作させるには、ファイルの権限に委ねられました:C:\ProgramData\ssh\administrators_authorized_keys
これは役立つページです。 https://github.com/PowerShell/Win32-OpenSSH/wiki/Troubleshooting-Steps
2つのOpenSSHサービスを停止してから、command Prompt
でadmin 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ファイルのパーミッションのスクリーンショットを追加しました:
OpenSSH SSH Server
がサービスとして実行されている場合、System
のみに許可が必要です。ただし、コマンドプロンプトからsshd.exe
を実行する場合、現在のユーザーのみがリストされます(読み取り許可、書き込み拒否)。
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を使用できます。
私の場合、それは(/etc/ssh/sshd_config
)が原因でした。
PermitRootLogin no
yes
に変更し、サービスを再起動して、正常に取得しました。
Windows Serverからこのエラーを受け取った人については、この同じエラーを受け取りましたが、これはユーザーアカウントの問題でした。多くの組織では、管理者のグループポリシーにより、SSHサーバーと接続のセットアップが許可されない場合があります。このタイプのセットアップでは、ローカル管理者アカウントからこれを行う必要があります。公開鍵にタイプミスがないことを確認したら、調査する価値があるかもしれません。
私はこの問題を解決しました。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 ~/.ssh
Sudo chmod 600 ~/.ssh/authorized_keys
を変更し、/ etc/ssh/sshd_config、RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
を変更する必要があります私の努力を試みます、ありがとう!
Sshdがauthorized_keys2
からのみ読み取るこの問題があります。
ファイルをコピーまたは名前変更すると、問題が解決しました。
cd ~/.ssh
Sudo cat authorized_keys >> authorized_keys2
追伸WindowsのPuTTYを使用しており、キーペアの生成にPuTTyKeygenを使用しています。
私の場合、nfsのホームは777でしたが、750である必要がありました。これで問題が修正されました。
Mobaxtermを介してログオンしようとすると、同様の問題に直面していました。秘密鍵は、puttygenを介して生成されました。私の場合、キーの再生成が役立ちました。
ルートマウントを修正する手順(ec2-userフォルダーと認証キーファイルでアクセス許可を変更したため、この手順に従いました)このプロセスは、ペンドライブの取り外しと接続に似ています。
以下に遭遇する可能性のある他のシナリオがいくつかあります-
- SSH秘密鍵を使用していますが、対応する公開鍵はauthorized_keysファイルにありません。
- Authorized_keysファイルに対する権限がありません。
- .sshフォルダーに対するアクセス許可がありません。
- Authorized_keysファイルまたは.sshフォルダーの名前が正しくありません。
- Authorized_keysファイルまたは.sshフォルダーが削除されました。
それらを修正する手順
手順を実行して新しいec2にログインした後
Sudo mount /dev/mapper/rootvg-home /mnt
現在、直面している問題でボリュームを修正しました。主にユーザー許可の問題である可能性があります-Umount/mntでアンマウントします-コンソールに移動し、新しいインスタンスに接続されたボリュームをポイントしデタッチ-デタッチ後、/ dev/sda1として新しいボリュームにアタッチします
これで、正常にログインできるはずです
amazon Linuxマシンを使用している場合は、ec2-user
としてログインします
キーを確認してください。これは今日のrsa(id_rsa.pub)キーであり、dss(id_dsa.pub)キーではなく、puttygen 0.70を使用し、生成するキーのタイプでRSAを選択し、ホスト〜/の公開キーを置き換えます。 ssh/authorized_keys
Cpanelを使用する場合、キーが認証されているかどうかを確認できます
SSHアクセス>>公開キー>>管理>>認証または認証解除。
私のために働くのはそれです:
今回は私のために動作します。しかし、インスタンスが起動されたときに最初にキーファイル情報を持たない理由はわかりません。このリンクも確認してください https://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshootingInstancesConnectingMindTerm
PUTTYgenファイルをpsftpで使用していますが、クライアント用の新しいキーを作成する必要があるときに、Windowsサーバーでこの問題が発生しました。 private_key_name。ppkファイルとopen_ssh.txtファイルは、接続が機能するために同じディレクトリに存在する必要があります。
/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
私の場合、問題はこのようなものでした。sshキーの生成中に、キーのデフォルトのディレクトリを意図的に変更しました。場所〜/ .ssh/authorized_keysを使用する代わりに、~/home/user/folder1/.ssh/authorized_keys
を使用することを選択しました。これらの変更が機能するために、このファイル/etc/ssh/sshd_config
の新しい場所について同じ変更を行うことになっています。しかし、これに気付くまで、ホームフォルダーの許可を700
に、.sshディレクトリーを600
に設定するなど、他の人から提案されたいくつかのソリューションを既に試していました。
私の経験として、Linux側からは生成せず、PuTTYから鍵を生成することをお勧めします。キーが古いPEM形式になるためです。とにかく、ちょうど私の提案。私は以下の手順を実行し、私と私のチームでうまく働きました。
ローカルでPuTTYGen.exeを使用してキーペアを生成します(タイプ:RSA、長さ:2048ビット)。
ローカルに「id_rsa.ppk/id_rsa.pub」ファイルとして秘密/公開キーを保存します。
ローカルで「authorized_keys」ファイルを作成し、「id_rsa.pub」に公開キーを入力して「authorized_keys 」)。コンテンツは「ssh-rsa」および1行のみで始まる必要があることを忘れないでください。
次のコマンドを実行します。
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
chown $ USER:$ USER .ssh -R
PuTTY.exeプロファイルで秘密鍵「id_rsa.ppk」をロードして接続設定をテストし、「開く」をクリックします(ある場合はパスフレーズを入力します)。