EC2 인스턴스의 키 페어 변경
AWS Management Console에서 EC2 인스턴스의 키 페어를 어떻게 변경합니까? 인스턴스를 중지하고 새 키 페어를 만들 수 있지만 인스턴스의 키 페어를 수정할 수있는 링크가 표시되지 않습니다.
그냥 이렇게 : https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#replacing-lost-key-pair
Eric Hammond의 블로그 게시물 덕분에 내가 한 일이 있습니다.
- 실행중인 EC2 인스턴스 중지
/dev/xvda1
볼륨을 분리합니다 (볼륨 A라고 부릅니다)- 여기 참조- 새 키 페어를 사용하여 새로운 t1.micro EC2 인스턴스를 시작하십시오. 동일한 서브넷 에서 생성해야합니다. 그렇지 않으면 인스턴스를 종료하고 다시 생성해야합니다. - 여기를 참조하십시오
/dev/xvdf
(또는/dev/sdf
) 와 같이 볼륨 A를 새 마이크로 인스턴스에 연결하십시오.새 마이크로 인스턴스에 SSH로 연결하고 볼륨 A를
/mnt/tmp
$ sudo 마운트 / dev / xvdf1 / mnt / tmp
복사
~/.ssh/authorized_keys
에/mnt/tmp/home/ubuntu/.ssh/authorized_keys
- 로그 아웃
- 마이크로 인스턴스 종료
- 볼륨 A에서 분리
- 다음과 같이 볼륨 A를 기본 인스턴스에 다시 연결하십시오.
/dev/xvda
- 메인 인스턴스 시작
- 새
.pem
파일을 사용하여 이전과 같이 로그인
그게 다야.
인스턴스가 시작되면 메타 데이터 수준에서 인스턴스와 관련된 키 페어를 변경할 수있는 방법은 없지만 인스턴스에 연결하기 위해 사용하는 ssh 키를 변경할 수 있습니다.
대부분의 AMI에는 퍼블릭 ssh 키를 다운로드하여 .ssh / authorized_keys 파일에 설치하여 해당 프라이빗 ssh 키를 사용하여 해당 사용자로 ssh를 시작할 수있는 시작 프로세스가 있습니다.
인스턴스에 액세스하기 위해 사용하는 ssh 키를 변경하려면 인스턴스 자체에서 certified_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에 업로드하는 것이 좋습니다.
여기에 내가 쓴 기사가 있습니다.
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 지원 지침 :
- PEM 로그인 변경
- EC2 콘솔로 이동
- 네트워크 및 보안에서 키 페어를 클릭하십시오. 키 페어 생성을 클릭하십시오.
- 새 키 페어에 이름을 지정하고 .pem 파일을 저장하십시오. 키 페어의 이름은 인스턴스에 연결하는 데 사용됩니다
- 인스턴스에 대한 SSH 연결을 만들고 열어 둡니다
- PuttyGen에서 "로드"를 클릭하여 .pem 파일을로드하십시오.
- SSH-2 RSA 단일 선택 단추를 선택된 상태로 유지하십시오. "개인 키 저장"을 클릭하십시오. 팝업 창이 나타나면 "예"를 클릭하십시오.
- "공개 키 저장"을 클릭하여 공개 키를 생성하십시오. 이것은 현재 인스턴스로 복사 할 공개 키입니다.
- 새 키 쌍 이름과 확장자가 .pub 인 공개 키를 저장하십시오.
- 메모장에서 공개 키 컨텐츠 열기
- "설명 :"imported-openssh-key "아래 및"---- END SSH2 PUBLIC KEY ---- 이전
에 내용을 복사하십시오. – 내용을 한 줄로 복사해야합니다. 모든 새 줄을 삭제하십시오. - 연결된 인스턴스에서 도구 vi를 사용하여 authorized_keys 파일을 엽니 다. 다음 명령을 실행하십시오. vi .ssh / authorized_keys 파일에 원래 공개 키도 표시되어야합니다.
- 파일에서 커서를 첫 번째 공개 키 컨텐츠의 끝으로 이동하십시오. 삽입을 위해 "i"를 입력하십시오.
- 새 줄에 "ssh-rsa"를 입력하고 공개 키의 내용, 공백 및 .pem 파일의 이름 (.pem 제외)을 붙여 넣기 전에 공백을 추가하십시오. 참고- 이전 줄과 같은 형식
- Esc 키를 누른 다음 : wq!를 입력하십시오.
업데이트 된 authorized_keys 파일이 저장됩니다
이제 새로운 키 파이를 사용하여 인스턴스에 새로운 SSH 세션을 열어보십시오
새 키 페어를 사용하여 인스턴스에 SSH로 연결할 수 있음을 확인하면 .ssh / authorized_key를 vi하고 이전 키를 삭제할 수 있습니다.
Shaggie의 답변에 대한 답변 :
인스턴스에 연결할 수없는 경우 (예 : 키가 손상됨) 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> 구성> 인스턴스 형태로 AMI를 지정하십시오 . 또한 EC2 인스턴스 교체에 대해 경고합니다.
EC2 키 페어와 커스텀 AMI ID를 수정 한 후 둘 다에 대한 경고가 표시되면 저장 을 클릭 하여 계속하십시오.
인스턴스를 다시 만들 때 IP 주소가 변경되므로 SSH를 통해 연결할 때 사용할 EC2 콘솔에서 새 IP 주소를 검색해야합니다.
나는이 접근법을 겪었고 얼마 후, 그것을 작동시킬 수있었습니다. 실제 명령이 없기 때문에 힘들었지 만 알아 냈습니다. 그러나 훨씬 더 쉬운 접근 방식을 발견하고 곧바로 테스트했습니다.
- 인스턴스를 AMI로 저장합니다 (재부팅 여부에 관계없이 재부팅하는 것이 좋습니다). EBS가 지원되는 경우에만 작동합니다.
- 그런 다음이 AMI에서 인스턴스를 시작하고 새 키 파일을 할당하십시오.
- 탄력적 IP (해당되는 경우)를 새 인스턴스로 옮기면 완료됩니다.
아래 단계를 수행하면 시간이 많이 절약되고 실행중인 인스턴스를 중지 할 필요가 없습니다.
- 새로운 키 페어를 사용하여 새로운 t1.micro EC2 인스턴스를 시작하십시오. 동일한 서브넷 에서 생성해야합니다. 그렇지 않으면 인스턴스를 종료하고 다시 생성해야합니다.
- 새 마이크로 인스턴스로 SSH를 연결하고 컴퓨터의 어딘가에 ~ / .ssh / authorized_keys의 내용을 복사 합니다.
- 이전 ssh 키 를 사용하여 기본 인스턴스에 로그인하십시오 .
- 포인트 2에서 ~ / .ssh / authorized_keys로 파일 내용 복사 및 교체
- 이제 새 키로 만 다시 로그인 할 수 있습니다. 이전 키는 더 이상 작동하지 않습니다.
그게 다야. 즐기십시오 :)
ElasticBeanstalk 플랫폼을 사용하는 경우 다음을 수행하여 키를 변경할 수 있습니다.
- Elastic Beanstalk 패널
- 구성
- 인스턴스 (톱니 바퀴 오른쪽 상단)
- EC2 키 페어
현재 인스턴스가 종료되고 선택한 키 / 설정으로 새 인스턴스가 생성됩니다.
가장 간단한 방법은 다음과 같습니다.
- 원래 인스턴스의 AMI 이미지를 만듭니다.
- 새 키 페어와 함께 AMI 이미지 (1 단계)를 사용하여 새 EC2 인스턴스를 시작하십시오.
- 새 키를 사용하여 새 EC2 인스턴스에 로그인하십시오.
가장 간단한 해결책은
~/.ssh/id_rsa.pub
에서 AWS 인스턴스의 authorized_keys에
~/.ssh/authorized_keys
이를 통해 ssh 명령에 pem 파일을 지정하지 않고 EC2 인스턴스로 ssh 할 수 있습니다. 연결을 테스트 한 후에 다른 모든 키를 제거 할 수 있습니다.
다른 사람과 공유하기 위해 새 키를 작성해야하는 경우 다음을 사용하여 수행 할 수 있습니다.
ssh-keygen -t rsa
그러면 개인 key.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
. 이를 위해 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 인스턴스에 로그인 할 수 없었습니다.
- 이전 머신에서 이전 .pem 파일을 사용하여 ec2 인스턴스에 로그인하십시오. ~ / .ssh / authorized_keys 열기
해당 파일에 이전 키가 표시됩니다.
ssh-keygen -f YOUR_PEM_FILE.pem -y 키를 생성합니다. 1 단계에서 연 ~ / .ssh / authorized_keys에 키를 추가하십시오. 이전 키를 삭제할 필요가 없습니다.
AWS 콘솔에서 새 키 페어를 생성하십시오. 새 기계에 보관하십시오. 이전 pem 파일로 이름을 바꿉니다. 이유는 old pem 파일이 여전히 AWS의 ec2 인스턴스와 연관되어 있습니다.
다 했어요
새 클라이언트 머신에서 AWS ec2에 로그인 할 수 있습니다.
EC2 인스턴스의 키를 대체하는 몇 가지 옵션이 있습니다.
- .ssh / authorized_keys 파일에서 키를 수동으로 교체 할 수 있습니다. 그러나 암호화되지 않은 경우 인스턴스 또는 볼륨에 실제로 액세스 할 수 있어야합니다.
- AWS Systems Manager를 사용할 수 있습니다. 에이전트가 설치되어 있어야합니다.
첫 번째 옵션은 답변이나 선택한 검색 엔진에서 쉽게 찾을 수 있으므로 Systems Manager에 집중하고 싶습니다.
- 서비스를 엽니 다
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의 파일에 액세스 할 수있었습니다.
키를 변경 / 추가하려는 인스턴스에 액세스 할 수있는 경우에만 작동합니다. 새 키 페어를 만들 수 있습니다. 또는 키 페어가 이미있는 경우 새 페어의 퍼블릭 키를 인스턴스의 authorized_keys 파일에 붙여 넣을 수 있습니다.
vim .ssh / authorized_keys
이제 해당 쌍의 개인 키를 사용하여 로그인 할 수 있습니다.
도움이 되었기를 바랍니다.
내 문제는 IP
공개보다는 시도했다 DNS
. 그런 다음 시도 public DNS
하고 해결했습니다.
VM에 로그인 할 수없고 ssh 키를 삭제 한 경우 아래 단계를 사용하여 ec2의 키 페어를 변경할 수도 있습니다. 1 단계로 이동하십시오. ec2 인스턴스를 중지하십시오. 2) VM 및 스토리지의 스냅 샷을 만듭니다. 3) 새 VM을 생성하면서 생성하면서 스냅 샷을 선택하고 스냅 샷에서 VM을 생성합니다. 4) VM을 만들면 키 쌍이 다운로드됩니다. 5) VM이 활성화되면 새로운 키 페어를 사용하여 ssh를 수행 할 수 있으며 데이터도 백업됩니다.
참고 URL : https://stackoverflow.com/questions/7881469/change-key-pair-for-ec2-instance
'Programming' 카테고리의 다른 글
Git 커밋 범위에서 더블 도트“..”와 트리플 도트“…”의 차이점은 무엇입니까? (0) | 2020.02.27 |
---|---|
bodyParser는 더 이상 사용되지 않습니다. express 4 (0) | 2020.02.27 |
EditText의 첫 글자 대문자 (0) | 2020.02.27 |
핍의 캐시를 제거 하시겠습니까? (0) | 2020.02.27 |
파이썬 모듈에서 모든 함수를 나열하는 방법? (0) | 2020.02.27 |