回答:
この回答は、既存のサーバーにSSHアクセスできなくなった場合(つまり、秘密鍵を紛失した場合)に役立ちます。
それでもSSHアクセスが可能な場合は、以下の回答のいずれかを使用してください。
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#replacing-lost-key-pair
Eric Hammondのブログ投稿のおかげで、これが私がやったことです:
/dev/xvda1
ボリュームを切り離します(ボリュームAと呼びましょう)- ここを参照してください/dev/xvdf
(または/dev/sdf
)として、ボリュームAを新しいマイクロインスタンスに接続します。新しいマイクロインスタンスにSSHで接続し、ボリュームAをマウントします /mnt/tmp
$ sudo mount / dev / xvdf1 / mnt / tmp
コピー~/.ssh/authorized_keys
へ/mnt/tmp/home/ubuntu/.ssh/authorized_keys
/dev/xvda
.pem
ファイルを使用してログインします。それでおしまい。
mkdir /mnt/tmp
その後、mount /dev/xvdf /mnt/tmp
#5のためにトリックを行う必要があります。ステップ13は、rm ~/.ssh/known_hosts
接続元のボックスにある可能性があります。
.ssh/authorized_keys
ファイルを置き換えることは言うまでもありません。
インスタンスが開始されると、インスタンスに関連付けられたキーペアをメタデータレベルで変更する方法はありませんが、インスタンスへの接続に使用するsshキーを変更できます。
ほとんどのAMIには、公開sshキーをダウンロードして.ssh / authorized_keysファイルにインストールする起動プロセスがあるため、対応する秘密sshキーを使用して、そのユーザーとしてsshでログインできます。
インスタンスへのアクセスに使用するssh鍵を変更する場合は、インスタンス自体のauthorized_keysファイルを編集して、新しいssh公開鍵に変換する必要があります。
authorized_keysファイルは、ログインしているユーザーのホームディレクトリの下の.sshサブディレクトリの下にあります。実行しているAMIに応じて、次のいずれかになります。
/home/ec2-user/.ssh/authorized_keys
/home/ubuntu/.ssh/authorized_keys
/root/.ssh/authorized_keys
authorized_keysファイルを編集した後は、ファイルの編集に使用しているセッションから切断する前に、必ず別のターミナルを使用して、インスタンスにSSHで接続できることを確認してください。間違いを犯してインスタンスから完全にロックアウトしたくない場合。
EC2でのssh鍵ペアについて考えている間、Amazonに鍵ペアを生成させるのではなく、独自の個人ssh公開鍵をEC2にアップロードすることをお勧めします。
これは私がこれについて書いた記事です:
個人のsshキーをAmazon EC2にアップロードする
http://alestic.com/2010/10/ec2-ssh-keys
これは、実行する新しいインスタンスにのみ適用されます。
.pem
し、Macで秘密鍵ファイルを受け取りましたが、ssh -i key.pem
認証されません(アクセスが拒否されました(公開鍵))。EC2管理コンソールのキーペア名の下には何も表示されません。これは私にとって憂慮すべきことです。どうすれば設定できますか?管理コンソールに基づいて、構成したキーペアがインスタンスに割り当てられていないようです!
AWS pemをダウンロードした後で、このコマンドを実行します。
ssh-keygen -f YOURKEY.pem -y
次に、出力をにダンプしますauthorized_keys
。
または、pemファイルをAWSインスタンスにコピーし、次のコマンドを実行します
chmod 600 YOURKEY.pem
その後
ssh-keygen -f YOURKEY.pem -y >> ~/.ssh/authorized_keys
AWS EC2サポートからの指示:
更新されたauthorized_keysファイルを保存します
新しいキーパイを使用して、インスタンスへの新しいSSHセッションを開いてみます
新しいキーペアを使用してインスタンスにSSHで接続できることを確認したら、vi .ssh / authorized_keyを実行して古いキーを削除できます。
シャギーの発言への回答:
インスタンスに接続できない(キーが破損しているなど)場合は、AWSコンソールを使用してボリュームを切り離します(http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-detaching-volume.html)、それを作業インスタンスに再接続します。その後、ボリュームのキーを変更して、以前のインスタンスに再接続します。
Elastic Beanstalkで管理すると、アクティブなEC2キーペアを変更できることに気付きました。[Elastic Beanstalk]> [設定]> [セキュリティ]で、EC2キーペアのドロップダウンから新しいキーを選択します。確信があるかどうかを尋ねるこのメッセージが表示されます。
EC2KeyName:オプションEC2KeyName設定への変更はすぐには有効になりません。既存の各EC2インスタンスが置き換えられ、新しい設定が有効になります。
これを行ったとき、インスタンスはすでに終了していました。その後、開始、終了、そして再開しました。明らかに「置換」とは、新しいインスタンスを終了して作成することを意味します。ブートボリュームを変更した場合は、最初にAMIを作成してから、カスタムAMI IDと同じElastic Beanstalk> Configuration> InstancesフォームでそのAMIを指定します。これは、EC2インスタンスの交換についても警告します。
EC2キーペアとカスタムAMI IDを変更し、両方に関する警告が表示されたら、[ 保存 ]をクリックして続行します。
インスタンスが再作成されるとIPアドレスが変わるため、SSH経由で接続するときに使用するEC2コンソールから新しいIPアドレスを取得する必要があることに注意してください。
私はこのアプローチを試してみて、しばらくして、それを機能させることができました。実際のコマンドの欠如はそれを難しくしましたが、私はそれを理解しました。しかし、その後すぐに、はるかに簡単なアプローチが見つかり、テストされました。
以下の手順に従うと、時間を大幅に節約でき、実行中のインスタンスを停止する必要がなくなります。
それだ。楽しんでください:)
私は、最も単純なアプローチは次のようになると信じています:
ElasticBeanstalkプラットフォームを使用している場合は、次のようにしてキーを変更できます。
これにより、現在のインスタンスが終了し、選択したキー/設定で新しいインスタンスが作成されます。
この質問で尋ねられる2つのシナリオがあります:-
1).pemファイルにアクセスできないため、新しいファイルを作成します。
2)あなたは持っています。あなたと一緒にpemファイルにアクセスできますが、脆弱性やセキュリティの目的で新しい.pemファイルを変更または作成したいだけです。
したがって、キーを紛失した場合は、上にスクロールして他の回答を確認できます。ただし、セキュリティ上の理由から.pemファイルを変更するだけの場合は、次の手順に従ってください。
1)AWSコンソールのログインに移動し、そこにあるキーペアセクションから新しい.pemファイルを作成します。それは自動的にあなたのPCに.pemファイルをダウンロードします
2)Linux / ubuntuを使用している場合は、権限を400に変更します。以下のコマンドを実行します
chmod 400 yournewfile.pem
3)ローカルマシンで新しくダウンロードしたファイルのRSAを生成する
ssh-keygen -f yournewfile.pem -y
4)ここからRSAコードをコピーします
5)次に、以前の.pemファイルを介してインスタンスにSSHで接続します
ssh -i oldpemfileName.pem username@ipaddress
sudo vim ~/.ssh/authorized_keys
6)1〜2行のスペースを空け、コピーした新しいファイルのRSAをここに貼り付け、ファイルを保存します
7)これで、新しい.pemファイルが実行中のインスタンスにリンクされます
8)以前の.pemファイルへのアクセスを無効にしたい場合は、
sudo vim ~/.ssh/authorized_keys
ファイルを作成し、ここから以前のRSAを削除または変更します。
注意:-新しく作成したRSAが変更されないように、慎重に削除して。
このようにして、新しい.pemファイルを実行中のインスタンスに変更/接続できます。
セキュリティ上の理由により、以前に生成された.pemファイルへのアクセスを取り消すことができます。
お役に立てれば幸いです。
最も簡単な解決策は、コンテンツをコピーすることです
~/.ssh/id_rsa.pub
AWSインスタンスのauthorized_keysに
~/.ssh/authorized_keys
これにより、sshコマンドにpemファイルを指定せずにEC2インスタンスにSSHで接続できます。接続をテストしたら、他のすべてのキーを削除できます。
他の人と共有するために新しいキーを作成する必要がある場合は、次のようにして行うことができます。
ssh-keygen -t rsa
これにより、秘密鍵.pemファイルが作成され、その公開鍵は次のようにして取得できます。
ssh-keygen -f private_key.pem -y > public_key.pub
private_key.pemを持っている人は誰でも接続できます
ssh user@host.com -i private_key.pem
~/.ssh/authorized_keys
SSHインスタンスすらできない場合、どうすればアクセスできますか?
でルートデバイスをローテーションしてSSH公開鍵を変更する必要はありませんauthorized_keys
。そのため、userdataを使用して、任意のインスタンスにsshキーを追加できます。最初に、AWSコンソールまたはssh-keygenを使用して新しいKeyPairを作成する必要があります。
ssh-keygen -f YOURKEY.pem -y
これにより、新しいSSH KeyPairの公開鍵が生成され、この公開鍵をコピーして、以下のスクリプトで使用します。
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [scripts-user, always]
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
#!/bin/bash
/bin/echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6xigPPA/BAjDPJFflqNuJt5QY5IBeBwkVoow/uBJ8Rorke/GT4KMHJ3Ap2HjsvjYrkQaKANFDfqrizCmb5PfAovUjojvU1M8jYcjkwPG6hIcAXrD5yXdNcZkE7hGK4qf2BRY57E3s25Ay3zKjvdMaTplbJ4yfM0UAccmhKw/SmH0osFhkvQp/wVDzo0PyLErnuLQ5UoMAIYI6TUpOjmTOX9OI/k/zUHOKjHNJ1cFBdpnLTLdsUbvIJbmJ6oxjSrOSTuc5mk7M8HHOJQ9JITGb5LvJgJ9Bcd8gayTXo58BukbkwAX7WsqCmac4OXMNoMOpZ1Cj6BVOOjhluOgYZbLr" >> /home/hardeep/.ssh/authorized_keys
--//
再起動後、マシンは指定されたSSH publchキーを持ちます。最初の再起動後にユーザーデータを削除します。起動時のユーザーデータの詳細をご覧ください。
警告:ユーザーデータを再度クリアすることを忘れないでください。それ以外の場合、このキーはインスタンスが起動するたびにプッシュされます。ステップバイステップの説明。
#cloud-config
bootcmd:
- echo 'ssh-rsa AAAAB3Nz...' > /root/.ssh/authorized_keys
以下の手順を試してみましたが、インスタンスを停止することなく機能しました。私の要件は、クライアントマシンを変更したため、古い.pemファイルでec2インスタンスにログインできないことでした。
そのファイルに古いキーが表示されます。
ssh-keygen -f YOUR_PEM_FILE.pem -yキーを生成します。手順1で開いた〜/ .ssh / authorized_keysにキーを追加します。古いキーを削除する必要はありません。
AWSコンソールから、新しいキーペアを作成します。新しいマシンに保管します。古いpemファイルに名前を変更します。理由は、古いpemファイルがAWSのec2インスタンスにまだ関連付けられているためです。
全部終わった。
新しいクライアントマシンからAWS ec2にログインできます。
EC2インスタンスのキーを置き換えるいくつかのオプションがあります。
最初のオプションは、回答または選択した検索エンジンで簡単に見つけることができるため、システムマネージャに焦点を当てたいと思います。
Systems Manager
Automation
左側をクリックします。Execute Automation
AWSSupport-TroubleshootSSH
(通常は最後のページにあります)詳細については、公式AWSドキュメントをご覧ください。
Yegor256の答えは私にとってはうまくいきましたが、ドライブをマウントするのがあまり得意でない人(私のように!)を助けるためにコメントを追加するだけだと思いました:
Amazonでは、ボリュームを接続するときに、ボリュームに付ける名前を選択できます。/ dev / sda-/ dev / sdpの範囲の名前を使用しています。Ubuntuの新しいバージョンでは、そこに入力した名前を/ dev / xvd(x)またはその効果に変更します。
そのため、私はAWSでマウント名として/ dev / sdpを選択し、サーバーにログインして、Ubuntuが私のボリュームの名前を/ dev / xvdp1に変更したことを発見しました。次に、ドライブをマウントする必要がありました。私にとっては、次のように実行する必要がありました。
mount -t ext4 xvdp1 /mnt/tmp
これらすべてのフープをジャンプした後、/ mnt / tmpにあるファイルにアクセスできました
VMにログインできず、sshキーを削除した場合、以下の手順でec2のキーペアを変更することもできます。ステップバイステップ1)ec2インスタンスを停止します。2)VMとストレージのスナップショットを取得します。3)作成中に新しいVMを作成し、スナップショットを選択して、スナップショットからVMを作成します。4)VMの作成中にキーペアがダウンロードされます。5)VMが起動したら、新しいキーペアでsshを実行すると、データも元に戻ります。
ヒントをくれてありがとう。キーペアをリセットする必要がある場合は、必ずそれらを覚えておいてください。ただし、効率性と怠惰のために、別の方法を考え出しました。
これがあなたにとって有用であり、あなたの時間を節約し、このようなものから得る白い髪の量を最小限にできることを願っています:)