web-dev-qa-db-ja.com

authorized_keysファイルにSSHキーを追加するにはどうすればよいですか?

Amazon EC2にUbuntuサーバーがあり、これを開発に使用していますが、今日、~/.ssh/authorized_keysファイルからすべてを愚かにクリアしました。幸いなことに、SSHを開いているため、まだ接続されており、ファイルを修正できますが、キーファイルを元に戻しようとしても機能しません。ローカルマシンのサーバーから許可が拒否されたままです。

authorized_keysのアクセス許可は600です。SSHキーをssh-rsaで追加し、ssh-rsaをオフにしてみました。 SSHキーをすべて1行にすることも試みましたが、それでもうまくいきませんでした。

何らかの方法でファイルをリロードする必要がありますか?

183
Dave Long

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で詳細を確認できます。

196
Lekensteyn

リモートマシンのauthorized_keysに公開キーをインストールする別の方法:

cat ~/.ssh/id_rsa.pub | ssh USER@Host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

いくつかの利点:

  • ssh-copy-id をインストールする必要はありません。

  • id_rsa.pubauthorized_keysを追加する前に、mkdirが機能することを保証します。

170
Marius Butuc

ログインベースの認証がある場合は、 ssh-copy-id を使用して、公開キーをリモートサーバーに追加します。

ssh-copy-id user@Host
127
Shoaib Nawaz
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
37
jjg

最も簡単な方法は、コピーして貼り付けることです...

最初に、ローカルの公開キーid_rsa.pubの内容を、先頭の「ssh-rsa」を含めて、メールアドレスで終わるまで表示/コピーします。

cat ~/.ssh/id_rsa.pub

次に、サーバーでauthorized_keysを編集し、クリップボードの内容をそのファイル内の他のキーの下に貼り付けます。

nano ~/.ssh/authorized_keys

そして、Ctl+Oを保存し、ファイルCtl+Xを終了し、SSHセッションexitを終了し、再度ログインして、動作を確認します。パスワードを要求しなかった場合は機能しました。

16
ow3n

これは具体的にはAWSインスタンスに関するものであり、すべての回答は問題をLinuxの問題として扱うだけで、あたかもそれがハードウェアの一部であるかのように、これに貢献できると考えました。最初に理解する必要があるのは、EC2インスタンスを決してハードウェアとして扱わないでください。それはあなたのためにより多くの仕事を作成するだけです。それは、AWSで人々が抱えている最大のハードルです。インスタンスのAMIを作成し、必要なキーを新しいインスタンスに注入します。 cloud-initが自動的に処理します。より詳細には、元のAMIから新しいインスタンスを作成するときに正しい公開キーを使用するだけです。承認済みの回答のコメントのように、pubファイルとpemファイルの独自のキーペアを生成する場合、AWSにはEC2で使用する公開キーをアップロードするオプションがあります。

http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#how-to-generate-your-own-key-and-import-it-to- aws

4
einarc

公開鍵を保存したら、秘密鍵をPCのディレクトリとファイルに保存する必要があります。また、PuTTYのsshのauthセクションで、デスクトップに保存した秘密キーファイルをポイントする必要があります。それが動作します。わたしにはできる。

3
user273266

キーを配置するリモートマシンでシェルを取得し、このワンライナーを実行して必要なファイルとディレクトリを作成し、それらの権限を設定して、ファイルにキーを追加します。もちろん、以下の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
2
Sarel Botha

テキストファイルに公開キーファイル名のリストがあり、公開キーファイルの大きなバッチも同じディレクトリにあるというバリエーションがあります。

このバリエーションは、インポートする公開鍵ファイルの膨大なリストを提供している場合に役立ちます:-)

$ for i in $(cat ListOfPubKeyFiles.txt) ; do cat $i | ssh User@Hostname "cat >> ~/.ssh/authorized_keys"; done
1
jlmontes