답변:
이 답변은 더 이상 기존 서버에 대한 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 마운트 / 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 키를 변경하려면 인스턴스 자체에서 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
이것은 실행하는 새 인스턴스에만 적용됩니다.
.pem
내 Mac 에서 개인 키 파일을 받았지만 ssh -i key.pem
인증되지는 않습니다 (권한이 거부 됨 (공개 키)). EC2 Management Console의 Key Pair Name (키 페어 이름)에 아무것도 표시되지 않습니다. 이것은 나에게 놀랍다. 이것을 어떻게 설정할 수 있습니까? 관리 콘솔을 기반으로 구성한 키 페어가 인스턴스에 할당되지 않은 것으로 나타납니다!
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로 연결할 수 있음을 확인하면 .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 주소를 검색해야합니다.
나는이 접근법을 겪었고 얼마 후, 그것을 작동시킬 수있었습니다. 실제 명령이 없기 때문에 힘들었지 만 알아 냈습니다. 그러나 훨씬 더 쉬운 접근 방식을 발견하고 곧바로 테스트했습니다.
아래 단계를 수행하면 시간이 많이 절약되고 실행중인 인스턴스를 중지 할 필요가 없습니다.
그게 다야. 즐기십시오 :)
가장 간단한 방법은 다음과 같습니다.
ElasticBeanstalk 플랫폼을 사용하는 경우 다음을 수행하여 키를 변경할 수 있습니다.
현재 인스턴스가 종료되고 선택한 키 / 설정으로 새 인스턴스가 생성됩니다.
이 질문에는 두 가지 시나리오가 있습니다.
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) 한 줄 간격을두고 새 파일의 복사 된 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
그러면 개인 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
SSH AWS 인스턴스조차도 액세스 할 수없는 경우 어떻게 액세스 할 수 있습니까?
루트 장치를 회전하거나 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 파일로 이름을 바꿉니다. 이유는 old pem 파일이 여전히 AWS의 ec2 인스턴스와 연관되어 있습니다.
다 했어요
새 클라이언트 머신에서 AWS ec2에 로그인 할 수 있습니다.
EC2 인스턴스의 키를 대체하는 몇 가지 옵션이 있습니다.
첫 번째 옵션은 답변이나 선택한 검색 엔진에서 쉽게 찾을 수 있으므로 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에서 파일에 액세스 할 수있었습니다.
VM에 로그인 할 수없고 ssh 키를 삭제 한 경우 아래 단계를 사용하여 ec2의 키 페어를 변경할 수도 있습니다. 1 단계로 이동하십시오. ec2 인스턴스를 중지하십시오. 2) VM 및 스토리지의 스냅 샷을 만듭니다. 3) 새 VM을 생성하면서 생성하면서 스냅 샷을 선택하고 스냅 샷에서 VM을 생성합니다. 4) VM을 만들면 키 쌍이 다운로드됩니다. 5) VM이 활성화되면 새로운 키 페어를 사용하여 ssh를 수행 할 수 있으며 데이터도 백업됩니다.
팁을 주셔서 감사합니다. 키 페어를 쉬어야 할 때 반드시 명심하십시오. 그러나 효율성과 게으름을 위해 다른 것을 생각해 냈습니다.
이것이 당신에게 유용 할 수 있기를 바랍니다 시간을 절약 할뿐만 아니라 다음과 같은 물건에서 얻는 흰 머리카락의 양을 최소화하십시오 :)