Amazon EC2にUbuntuサーバーがあり、これを開発に使用していますが、今日、~/.ssh/authorized_keys
ファイルからすべてを愚かにクリアしました。幸いなことに、SSHを開いているため、まだ接続されており、ファイルを修正できますが、キーファイルを元に戻しようとしても機能しません。ローカルマシンのサーバーから許可が拒否されたままです。
authorized_keys
のアクセス許可は600です。SSHキーをssh-rsaで追加し、ssh-rsaをオフにしてみました。 SSHキーをすべて1行にすることも試みましたが、それでもうまくいきませんでした。
何らかの方法でファイルをリロードする必要がありますか?
neverサーバー上の-----BEGIN RSA PRIVATE KEY-----
で始まる内容でファイルを保存する必要があります。つまり、 privateキー。代わりに、publicキーを~/.ssh/authorized_keys
ファイルに配置する必要があります。
このpublicキーは、.pub
を使用して生成された場合、ssh-keygen
拡張子を持ち、その内容はssh-rsa AAAAB3
で始まります。 (バイナリ形式は この質問 への回答に記載されています)。
サーバー上の~/.ssh
のアクセス許可は700である必要があります。ファイル~/.ssh/authorized_keys
(サーバー上の)はモード600であると想定されています。クライアント側の(プライベート)キーのアクセス許可は600になります。
秘密鍵がパスワードで保護されておらず、サーバーに置いた場合、新しいものを生成することをお勧めします。
ssh-keygen -t rsa
誰もサーバーから削除された秘密鍵を回復できないことが確実な場合、これをスキップできます。
これが役に立たない場合は、ssh
を実行して、より詳細なオプションを指定します。
ssh -vvv [email protected]
サーバー側では、/var/log/auth.log
で詳細を確認できます。
リモートマシンのauthorized_keys
に公開キーをインストールする別の方法:
cat ~/.ssh/id_rsa.pub | ssh USER@Host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
いくつかの利点:
ssh-copy-id
をインストールする必要はありません。
id_rsa.pub
にauthorized_keys
を追加する前に、mkdir
が機能することを保証します。
ログインベースの認証がある場合は、 ssh-copy-id
を使用して、公開キーをリモートサーバーに追加します。
ssh-copy-id user@Host
local> scp .ssh/id_dsa.pub remote.com:
local> ssh remote.com
remote> cat id_dsa.pub >> .ssh/authorized_keys
remote> rm id_dsa.pub
remote> exit
最も簡単な方法は、コピーして貼り付けることです...
最初に、ローカルの公開キーid_rsa.pub
の内容を、先頭の「ssh-rsa」を含めて、メールアドレスで終わるまで表示/コピーします。
cat ~/.ssh/id_rsa.pub
次に、サーバーでauthorized_keys
を編集し、クリップボードの内容をそのファイル内の他のキーの下に貼り付けます。
nano ~/.ssh/authorized_keys
そして、Ctl+O
を保存し、ファイルCtl+X
を終了し、SSHセッションexit
を終了し、再度ログインして、動作を確認します。パスワードを要求しなかった場合は機能しました。
これは具体的にはAWSインスタンスに関するものであり、すべての回答は問題をLinuxの問題として扱うだけで、あたかもそれがハードウェアの一部であるかのように、これに貢献できると考えました。最初に理解する必要があるのは、EC2インスタンスを決してハードウェアとして扱わないでください。それはあなたのためにより多くの仕事を作成するだけです。それは、AWSで人々が抱えている最大のハードルです。インスタンスのAMIを作成し、必要なキーを新しいインスタンスに注入します。 cloud-initが自動的に処理します。より詳細には、元のAMIから新しいインスタンスを作成するときに正しい公開キーを使用するだけです。承認済みの回答のコメントのように、pubファイルとpemファイルの独自のキーペアを生成する場合、AWSにはEC2で使用する公開キーをアップロードするオプションがあります。
公開鍵を保存したら、秘密鍵をPCのディレクトリとファイルに保存する必要があります。また、PuTTYのsshのauthセクションで、デスクトップに保存した秘密キーファイルをポイントする必要があります。それが動作します。わたしにはできる。
キーを配置するリモートマシンでシェルを取得し、このワンライナーを実行して必要なファイルとディレクトリを作成し、それらの権限を設定して、ファイルにキーを追加します。もちろん、以下のKEYGOESHERE
部分とその後のコメントを変更する必要があります。
mkdir -p ~/.ssh && chmod 700 ~/.ssh && touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && echo "ssh-rsa KEYGOESHERE user@remotehost or note" >> ~/.ssh/authorized_keys
テキストファイルに公開キーファイル名のリストがあり、公開キーファイルの大きなバッチも同じディレクトリにあるというバリエーションがあります。
このバリエーションは、インポートする公開鍵ファイルの膨大なリストを提供している場合に役立ちます:-)
$ for i in $(cat ListOfPubKeyFiles.txt) ; do cat $i | ssh User@Hostname "cat >> ~/.ssh/authorized_keys"; done