한 EC2 인스턴스에서 다른 인스턴스로 SSH를 통해 어떻게 연결하나요?

한 EC2 인스턴스에서 다른 인스턴스로 SSH를 통해 어떻게 연결하나요?

AWS에서 두 개의 EC2 인스턴스를 생성했습니다. 각각에 대해 키 쌍을 만들었습니다. .pem 개인 키를 다운로드하여 .ppk형식으로 변환했습니다. PuTTY와 해당 .ppk 프라이빗 키를 사용하여 각 ec2 인스턴스에 연결할 수 있습니다. 하지만 EC2 인스턴스 중 하나에서 다른 인스턴스로 SSH를 연결하려면 어떻게 해야 합니까? 둘 중 하나의 공용 DNS를 다른 쪽에서 핑할 수 있습니다. 그러나 한 곳에서 다른 곳으로 ssh를 시도하면 다음과 같은 결과를 얻습니다.

권한이 거부되었습니다(공개키).

답변1

방법 1 - 서버에서 동일한 키를 사용합니다.

키를 openssh 형식으로 변환개인 키를 서버에 업로드합니다. 대상 호스트에 SSH를 통해 연결할 때 개인 키 파일을 지정합니다.

ssh -i mykey.pem private.ip.of.other.server

방법 2 - 새 키 만들기

각 서버에서 다음을 실행합니다.

ssh-keygen

Enter Enter Enter를 누르세요. 두 개의 파일이 있습니다.

.ssh/id_rsa
.ssh/id_rsa.pub

~에서버 A, cat 및 공개 키를 클립보드에 복사합니다.

cat ~/.ssh/id_rsa.pub
[select and copy to your clipboard]

SSH로서버 B, 그 내용을 Authorized_keys 파일에 추가합니다.

cat >> ~/.ssh/authorized_keys
[paste your clipboard contents]
[ctrl+d to exit]

이제 서버 A에서 ssh를 실행합니다.

ssh -i ~/.ssh/id_rsa private.ip.of.other.server

답변2

세 번째와 IMHO가 소위 최고의 솔루션이 있습니다.SSH 에이전트 전달:

  • 로컬 시스템에서 다음 섹션을 추가하여 ~/.ssh/config를 구성합니다.
Host <ip-or-name-of-A-server>
  ForwardAgent yes
  • 서버 A와 B에 로컬 ~/.ssh/id_rsa.pub가 서버의 ~/.ssh/authorized_keys에 추가되어 있다고 가정합니다.

서버 A에서 작업하는 동안 추가 SSH 통신에 키를 사용할 수 있습니다. 예:

  • SSH 클라이언트를 사용하여 다른 서버에 연결(이 경우 서버 B에 연결)
  • scp(보안 복사본),
  • git - 로컬 ID를 사용하여 원격 git 저장소로 풀/푸시할 수 있습니다.
  • 등.

이것이 작동하는지 확인하려면 다음을 수행하십시오.

  • 서버 A에 연결
  • SSH_AUTH_SOCK env var를 감지하여 키 교환을 위한 소켓 연결이 있는지 확인하세요.
set|grep SSH_AUTH_ # output should be something like this:
SSH_AUTH_SOCK=/tmp/ssh-sEHiRF4hls/agent.12042

노트:

답변3

문제에 대한 새로운 AWS 솔루션입니다.

EC2 인스턴스 연결

이에 대한 블로그 게시물은 다음과 같습니다.

AWS 블로그

참고:

SSH 공개 키는 인스턴스 메타데이터에서 60초 동안 일회성으로만 사용할 수 있습니다. 인스턴스에 성공적으로 연결하려면 이 시간 내에 SSH를 사용하여 연결해야 합니다. 키가 만료되므로 이전처럼 이러한 키를 직접 추적하거나 관리할 필요가 없습니다.

관련 정보