AWSマネジメントコンソールでec2インスタンスのキーペアを変更する方法インスタンスを停止したり、新しいキーペアを作成したりできますが、インスタンスのキーペアを変更するためのリンクは表示されません。
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
ファイルを使用して、以前のようにログインしますそれでおしまい。
インスタンスが起動されると、メタデータレベルでインスタンスに関連付けられたキーペアを変更することはできませんが、インスタンスに接続するために使用する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ファイルを編集した後は、ファイルの編集に使用しているセッションから切断する前に、必ず different 端末を使用してインスタンスにsshでログインできることを確認してください。あなたはミスを犯したくないし、インスタンスから完全に締め出したくありません。
EC2でのsshキーペアについて検討している間は、Amazonにキーペアを生成させるのではなく、自分の個人用ssh公開キーをEC2にアップロードすることをお勧めします。
これは私がこれについて書いた記事です:
Amazon EC2への個人用sshキーのアップロード
http://alestic.com/2010/10/ec2-ssh-keys
これはあなたが実行した新しいインスタンスにのみ適用されます。
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接続できることを確認したら、u .ssh/authorized_keyを使用して古いキーを削除できます。
Shaggieの発言への回答:
インスタンスに接続できない場合(たとえば、キーが破損している場合)は、AWSコンソールを使用してボリュームをデタッチします( http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/ebs-detaching-volume) .html )をクリックして、ボリューム上のキーを変更して以前のインスタンスに再接続するよりも、作業中のインスタンスに再接続します。
Elastic Beanstalkで管理されている場合、アクティブなEC2キーペアをcan変更できることに気付きました。 [Elastic Beanstalk]> [設定]> [セキュリティ]で、[EC2キーペア]ドロップダウンから新しいキーを選択します。次のことを確認するメッセージが表示されます。
EC2KeyName:オプションEC2KeyName設定の変更はすぐには有効になりません。既存の各EC2インスタンスが置き換えられ、新しい設定が有効になります。
これを行うと、インスタンスは既に終了しました。その後、起動し、終了し、再び起動しました。どうやら「置換」とは、新しいインスタンスを終了して作成することを意味します。ブートボリュームを変更した場合は、最初にAMIを作成してから、同じElastic Beanstalk> Configuration> InstancesフォームでCustom AMI IDと同じAMIを指定します。これは、EC2インスタンスの置き換えについても警告します。
EC2キーペアとカスタムAMI IDを変更し、両方に関する警告が表示されたら、保存をクリックして続行します。
インスタンスを再作成するとIPアドレスが変更されるため、SSH経由で接続するときに使用するEC2コンソールから新しいIPアドレスを取得する必要があることに注意してください。
私はこのアプローチを経て、しばらくしてそれを機能させることができました。実際のコマンドがないので大変でしたが、私はそれを考え出しました。しかし、すぐ後にはるかに簡単なアプローチが見つかり、テストされました。
以下の手順に従うと、多くの時間を節約でき、実行中のインスタンスを停止する必要はありませんになります。
それだ。楽しい :)
ElasticBeanstalkプラットフォームを使用している場合は、次の手順でキーを変更できます。
これは現在のインスタンスを終了し、選択されたキー/設定で新しいインスタンスを作成します。
最も簡単な方法は、
最も簡単な解決策は、の内容をコピーすることです。
~/.ssh/id_rsa.pub
aWSインスタンスのauthorized_keysに
~/.ssh/authorized_keys
これにより、sshコマンドにpemファイルを指定せずにEC2インスタンスにSSHでログインできます。接続をテストしたら、他のすべてのキーを削除できます。
他の人と共有するために新しいキーを作成する必要がある場合は、次の手順でそれを実行できます。
ssh-keygen -t rsa
これでprivate key.pemファイルが作成され、その公開鍵を入手することができます。
ssh-keygen -f private_key.pem -y > public_key.pub
Private_key.pemを持っている人なら誰でもに接続できます
ssh [email protected] -i private_key.pem
authorized_keys
でルートデバイスをローテーションしてSSH公開キーを変更する必要はありません。そのため、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キーを取得します。最初の再起動後にユーザーデータを削除します。 起動時のユーザーデータ の詳細をご覧ください。
以下の手順を試してみましたが、インスタンスを停止することなく動作しました。私の要件は、クライアントマシンを変更したときに、古い.pemファイルではec2インスタンスにログインできないことでした。
あなたはそのファイルの中にあなたの古い鍵を見るでしょう。
ssh-keygen -f YOUR_PEM_FILE.pem -yキーを生成します。手順1で開いた〜/ .ssh/authorized_keysにキーを追加します。古いキーを削除する必要はありません。
AWSコンソールから、新しいキーペアを作成します。新しい機械に保管してください。古いpemファイルに名前を変更します - 古いpemファイルはAWSのec2インスタンスにまだ関連付けられているためです。
全部できた。
新しいクライアントマシンからAWS ec2にログインできます。
Yegor256の答えは私のために働きました、しかし、私はドライブをマウントすることがあまり得意でない人たちを助けるために私がちょうど私のコメントを加えたいと思いました:
あなたがそれを接続するとき、Amazonはあなたがあなたがボリュームに名前をつけたいものの選択をあなたに与える。/dev/sdaから/ dev/sdpまでの範囲の名前を使用してください。新しいバージョンのUbuntuでは、そこに入力した名前が/ dev/xvd(x)またはその効果のために変更されます。
そこで私は、AWSのマウント名として/ dev/sdpを選択してからサーバーにログインし、Ubuntuが自分のボリュームの名前を/ dev/xvdp1に変更したことを発見しました。それから私はドライブをマウントしなければなりませんでした - 私のために私はこのようにそれをしなければなりませんでした:
mount -t ext4 xvdp1 /mnt/tmp
これらすべてのフープを飛び越えた後、私は/ mnt/tmpで私のファイルにアクセスすることができました
私の問題は、パブリックIP
ではなくDNS
で試しました。それからpublic DNS
で試しましたが、解決しました
EC2インスタンスのキーを置き換えるためのいくつかのオプションがあります。
最初の選択肢は、回答または選択した検索エンジンで簡単に見つけることができるので、Systems Managerに集中したいと思います。
Systems Manager
Automation
をクリックしてください。Execute Automation
をクリックAWSSupport-TroubleshootSSH
を選択します(通常は最後のページにあります)公式AWSドキュメント に詳細情報があります。
VMにログインできず、sshキーを削除した場合、以下の手順を使用してec2のキーペアを変更することもできます。手順1に進み、ec2インスタンスを停止します。 2)VMおよびストレージのスナップショットを作成します。 3)新しいVMを作成し、スナップショットを選択して、スナップショットからVMを作成します。 4)VMを作成すると、キーペアがダウンロードされます。 5)VM UPになったら、新しいキーペアでsshを実行でき、データも元に戻ります。
キーを変更/追加したいインスタンスにアクセスできる場合にのみこれが機能します。新しいキーペアを作成できます。またはすでに鍵ペアを持っている場合は、新しいペアの公開鍵をインスタンスのauthorized_keysファイルに貼り付けることができます。
vim .ssh/authorized_keys
これで、そのペアの秘密鍵を使ってログインできます。
お役に立てれば。