SSH에서 Elastic Beanstalk 인스턴스로


304

방금 아마존의 새로운 Elastic Beanstalk 제품에 가입했습니다. 내가 알 수없는 것은 Beanstalk 인스턴스에 SSH하는 방법입니다. Beanstalk가 대신 인스턴스를 생성했기 때문에 개인 키가 없습니다.


그래서 마침내 로그인하면 Im이 내 git repo를 밀고있는 폴더로 어떻게 가야합니까?
진화

위의 답변은 다소 오래된 것 같습니다. 아마존은 지금 그것을하는 방법에 대한 좋은 문서를 가지고 있습니다. 키 페어 생성 방법에 대한 위의 제안을 따르십시오. 그런 다음 다음을 수행하십시오. <br> <br> docs.aws.amazon.com/elasticbeanstalk/latest/dg/… 행운을 빈다!
Jordan Michael Rushing

4
ELB CLI의 새로운 v3를 사용한다면 다음과 같이 할 수 있습니다eb ssh
Sharoon Thomas

답변:


491

나는 그것이 2 단계 과정이라는 것을 알았습니다. 이는 관련 리전의 EC2 인스턴스에 액세스하기 위해 키 페어를 이미 설정했다고 가정합니다.

보안 그룹 구성

  1. AWS 콘솔에서 EC2 탭을 엽니 다.
  2. 관련 지역을 선택하고 보안 그룹을 클릭하십시오.
  3. elasticbeanstalk-default해당 리전에서 Elastic Beanstalk 인스턴스를 시작한 경우 보안 그룹 이 있어야합니다 .
  4. SSH 액세스 규칙을 추가하도록 보안 그룹을 편집하십시오. 아래는 특정 IP 주소에서 들어오는 것만 허용하도록 잠겨 있습니다.

    SSH | tcp | 22 | 22 | 192.168.1.1/32
    

Elastic Beanstalk 애플리케이션 환경 구성

  1. 키 페어를 아직 만들지 않은 경우 ec2 탭의 보안 그룹 아래에서 키 페어를 클릭하여 키 페어를 만드십시오.
  2. AWS 콘솔에서 Elastic Beanstalk 탭을 엽니 다.
  3. 관련 지역을 선택하십시오.
  4. 관련 환경을 선택하십시오
  5. 왼쪽 분할 창에서 구성을 선택하십시오.
  6. 보안을 선택하십시오.
  7. "EC2 키 페어 :"아래의 Existing Key Pair필드 에서 키 페어 이름을 선택하십시오 .

인스턴스가 다시 시작되면 AWS 콘솔 EC2 인스턴스 탭 또는 API를 통해 호스트 이름을 가져와야합니다. 그런 다음 서버에 ssh 할 수 있어야합니다.

$ ssh -i path/to/keypair.pub ec2-user@ec2-an-ip-address.compute-1.amazonaws.com

참고 : 환경 구성에 키 페어를 추가하려면 Beanstalk가 현재 인스턴스를 종료하고 KeyPair로 새 인스턴스를 시작하려고하므로 인스턴스의 종료 방지 기능을 해제해야합니다.

참고 : 무언가가 작동하지 않으면 Beanstalk 애플리케이션 / 환경의 "이벤트"탭을 확인하고 무엇이 잘못되었는지 확인하십시오.


41
이 답변은 다른 답변보다 2 배 더 많은 표를 얻습니다. 기술적으로 엄격합니다. 그리고 매우 명확합니다. 무엇이 잘못 되었나요? 왜 받아 들여지지 않습니까?

6
위의 지침을 따랐 는데도 "Permission denied (publickey)"오류가 표시되면 다음과 같은 이유가 설명 될 수 있습니다. EB 설정이 둘 이상의 EC2 인스턴스를 시작하는 경우 어떤 것이 키 페어와 관련되어 있는지 확인해야합니다. 그것. 키 페어가있는 인스턴스에만 SSH 할 수 있습니다. EC2 인스턴스 메뉴에서 속성을 검사하여 확인할 수 있습니다.
퀘스트 당 Aronsson

27
인터페이스가 여기에서 변경되었을 수 있습니다. 저에게는 두 번째 섹션의 4 단계와 5 단계가 약간 다릅니다. 대시 보드를 열려면 관련 환경을 선택한 다음 왼쪽에서 '구성'을 선택해야합니다. '인스턴스'옆에있는 설정 톱니 바퀴 아이콘을 클릭하면 서버 설정 페이지가 나타납니다. 드롭 다운에서 EC2 키 페어를 선택할 수있어 편리했습니다. 그래도 큰 답변에 감사드립니다!
Dallin

12
ssh 명령의 경우 개인 키 (.pem) 파일과 user_name @ public_dns_name (공개 키가 아닌 .pub 확장자로 답변)을 지정해야합니다. Amazon Linux의 경우 기본 사용자 이름은 ec2-user입니다. RHEL5의 경우 사용자 이름은 종종 루트이지만 ec2-user 일 수 있습니다. 우분투의 경우 사용자 이름은 우분투입니다. SUSE Linux의 경우 사용자 이름은 root입니다. 그렇지 않으면 AMI 제공 업체에 확인하십시오. (신용 : docs.aws.amazon.com/AWSEC2/latest/UserGuide/… )
yacc

5
이 설정은 "구성"아래 "보안"탭으로 이동했습니다 (6 단계에서 "인스턴스"대신 "보안"선택)
delucasvb

128

Elastic beanstalk CLI v3은 이제 명령으로 직접 SSH를 지원합니다 eb ssh. 예 :

eb ssh your-environment-name

EC2 인스턴스 주소를 찾기 위해 보안 그룹을 설정해야하는 번거 로움이 없습니다.

이 멋진 트릭도 있습니다.

eb ssh --force

임시로 포트 22를 0.0.0.0으로 강제로 열고 exit. 이것은 번거 로움없이 최고 답변의 이점을 약간 혼합 합니다 . 디버깅 이외의 다른 사람에게 일시적으로 권한을 부여 할 수 있습니다. 물론 공개 키를 호스트에 업로드하여 액세스 할 수 있어야합니다. 일단 그렇게하고 나면 eb ssh다른 사람이 할 수 있습니다

ssh ec2-user@ec2-xx-xxx-xxx-xx.compute-1.amazonaws.com

2
방금 CLI v3을 직접 설치했는데 아름답게 작동합니다. 추가하기 위해 환경을 명령에 추가하여 환경을 지정할 수 있습니다 (예 :) eb ssh production. 설정 옵션을 사용하여 특정 환경을 설정할 수도 있습니다.eb ssh production --setup
jmera

흠 아니요, ~ / .ssh 디렉토리에 이미 개인 키가 있어야합니다. 어떤 사람들은 그것을 가지고 있습니다. 그렇지 않은 경우 여전히 생성하여 다운로드하여 EB에서 설정해야합니다.
Jorge Orpinel

49

Linux 클라이언트 및 간단한 AWS Beanstalk 설치 (단일 EC2 인스턴스)에서의 2013 년 8 월의 경험은 다음과 같습니다 (위의 커뮤니티 Wiki 기반).

보안 그룹 구성

  1. AWS 콘솔에서 EC2를 선택하여 EC2 대시 보드로 이동하십시오.
  2. 왼쪽 패널에서 Instances를 클릭 한 다음 연결할 인스턴스를 선택하여 EC2 인스턴스가 속한 보안 그룹을 찾으십시오 (필자의 경우 기본 환경이라고 함). 세부 사항은 페이지 하단에 표시됩니다. 보안 그룹에 대한 필드가 표시되어야합니다. 이름을 적어 두십시오. 제 경우에는 "awsweb ..."입니다.
  3. 왼쪽 패널에서 보안 그룹을 선택하십시오.
  4. awsweb...보안 그룹을 선택하면 세부 정보가 페이지 하단에 표시됩니다
  5. 인바운드 탭을 선택하고 "새 규칙 작성"드롭 다운에서 SSH를 선택하십시오. 연결하려는 로컬 컴퓨터의 IP 주소 / CIDR (예 : 192.168.0.12/32)을 삽입하고 규칙 추가 및 규칙 변경 사항 적용을 클릭하십시오.

공개-개인 키 쌍 생성

  1. EC2 대시 보드의 왼쪽 패널에서 Key Pairs를 선택하십시오.
  2. 키 쌍 (맨 위)을 클릭하고 myname-key-pair-myregion 또는 원하는 유효한 키 이름과 같은 이름을 입력하십시오.
  3. 브라우저에서 개인 키 다운로드를 확인한 후 예를 들어 홈 디렉토리에 저장하거나 어디에서나 저장하십시오. 디렉토리에 쓰기 권한 만 있는지 확인하십시오.

퍼블릭 프라이빗 키 페어를 Elastic Beanstalk EC2 서버와 연결

  1. 퍼블릭-프라이빗 키 페어를 Elastic Beanstalk EC2 인스턴스에 추가하려면 다음을 수행하십시오. 서비스-> Elastic Beanstalk-> 내 앱-> 기본 환경은 기본 환경 (앱을 업로드하는 환경)으로 이동합니다.
  2. 구성 (왼쪽 패널)을 클릭 한 다음 "인스턴스"와 관련된 기어 / 코그에서
  3. "서버"라는 제목의 페이지가 표시됩니다
  4. EC2 키 페어에서 사전 구축 된 키 파를 선택하고 저장
  5. 일부 경고 메시지가 표시되므로 다시 저장하십시오.

SSH를 사용하여 AWS EC2 인스턴스에 연결

  1. 터미널 세션에서 개인 키 (.pem 파일)가 포함 된 디렉토리로 변경하십시오.
  2. 이것에 대해 몇 가지 살펴 본다면 이름 바꾸기와 같은 것이 있다면 .ssh / known_hosts에 대해 뭔가를해야 할 것입니다. 그렇지 않으면 호스트 ID가 변경되었다는 오류가 표시 될 수 있습니다.
  3. ssh -i ./myname-key-pair-my-region.pem ec2-user@ec2-some-address.us-west-2.compute.amazonaws.com

행운을 빕니다


3
ssh 명령의 경우 개인 키 (.pem) 파일과 user_name @ public_dns_name을 지정해야합니다. Amazon Linux의 경우 기본 사용자 이름은 ec2-user입니다. RHEL5의 경우 사용자 이름은 종종 루트이지만 ec2-user 일 수 있습니다. 우분투의 경우 사용자 이름은 우분투입니다. SUSE Linux의 경우 사용자 이름은 root입니다. 그렇지 않으면 AMI 제공 업체에 확인하십시오. (신용 : docs.aws.amazon.com/AWSEC2/latest/UserGuide/… )
yacc

이 질문에는 키 페어 파트를 추가하는 가장 좋은 설명이 있습니다. 그러나 eb-cli를 사용하여 SSH 부분을 더 간단하게 수행하는 것을 좋아했습니다. 아직도, 나는 이것도 찬성했다.
Nick

35

나는 이것도 가지고 놀고있다.

  1. 탄력있는 콩나무 서비스 탭으로 이동
  2. 응용 프로그램 개요에서 goto action-> 구성 편집
  3. EC2 탭에 표시된 것과 같은 키 이름을 기존 키 쌍 상자에 추가하고 변경 사항 적용을 누르십시오.

서비스가 다시 시작되므로 5 분 동안 커피를 만드십시오.

같은 리전의 ec2 탭에 새로운 실행중인 인스턴스가 표시됩니다. ssh ec2-user@ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com과 같이 3에 추가 된 키를 사용하여 ec2-user로 공개 dns 이름으로 ssh


5
"ec2-user"부분을 추가하면 문제가되었습니다. 위의 답변과 병합되어야합니다.;).
Kirill Fuchs

30

EC2 인스턴스의 'Instance Actions'메뉴에 편리한 'Connect'옵션이 있습니다. 인스턴스의 올바른 URL로 실행할 정확한 SSH 명령을 제공합니다. Jabley의 전반적인 지침이 정확합니다.


24

위의 답변은 약간 낡았습니다.

먼저 키 페어를 생성 한 다음 Elastic Beanstalk 환경에 연결합니다.

키 페어를 만드는 단계

  1. AWS에 로그인
  2. 서비스-> EC2
  3. 네트워크 및 보안 아래 왼쪽에서 키 페어를 선택하십시오.
  4. Create new Key Pair를 선택하고 키 이름을 입력 한 후 create를 클릭하십시오. 키가 시스템에 자동으로 다운로드됩니다.

생성 된 키 페어를 Elastic Beanstalk 환경에 연결하는 단계

  1. AWS-> 서비스-> Elastic Beanstalk

  2. 환경을 선택하고 왼쪽에서 구성을 클릭하십시오.

  3. 구성 개요에서 보안에서 수정을 선택하십시오.

  4. 가상 머신 권한에서 작성한 키 쌍을 선택하십시오.

  5. 저장을 클릭 한 다음 구성 저장을 클릭하십시오.

EC2 인스턴스에 반영하는 데 시간이 걸립니다.



3

퍼블릭 IP 주소를 사용하여 ec2 인스턴스에 직접 연결해야합니다. elasticbeanstalk URL을 사용하여 연결할 수 없습니다.

ec2 콘솔에서 인스턴스 IP 주소를 찾아서 찾을 수 있습니다.

또한 포트 22가 열려 있는지 확인해야합니다. 기본적으로 EB CLI는 ssh 연결이 완료된 후 포트 22를 닫습니다. ssh 세션이 완료된 후 eb ssh -o를 호출하여 포트를 열린 상태로 유지할 수 있습니다.

경고 : 탄력적 Beantalk는 언제든지 인스턴스를 대체 할 수 있음을 알아야합니다. 탄력적 Beantalk 인스턴스에서 상태가 보장되지는 않습니다. 수정하는 것은 언제든지 사라질 수 있으므로 테스트 및 디버깅 목적으로 만 ssh를 사용하는 것이 좋습니다.


2

현재 UI를 사용하여 ElasticBeanstalk ec2 인스턴스의 키 페어를 설정하는 방법은 다음과 같습니다. 경고 : ElasticBeanstalk 앱에서 EC2 인스턴스를 업데이트해야합니다. 참고 :이 작업을 수행하기 전에 EC2 대시 보드에서 키 페어를 생성해야합니다.

1) AWS Dashboard에서 ElasticBeanstalk 서비스를 선택합니다. 2) 사용하려는 애플리케이션을 선택합니다. 3) '구성'을 선택하십시오. 4) '인스턴스'구성 상자에서 기어 (설정) 아이콘을 선택하십시오. 5) 그러면 '서버'라는 제목의 페이지로 이동합니다. 여기서 'EC2 키 페어'드롭 다운 필드를 원하는 키 페어로 업데이트하고 '저장'을 선택하십시오.

주목해야 할 것은 여러 인스턴스가있는 응용 프로그램에서는 작동하지 않을 수 있다는 것입니다 (그러나 모두 키 쌍과 동일한 지역에있을 가능성이 높습니다).


1

프로비저닝 중에 Beanstalk가 생성하는 인스턴스에 키를 추가하는 방법을 찾기 위해 여기에 왔습니다 (우리는 Terraform을 사용하고 있습니다). Terraform에서 다음을 수행 할 수 있습니다.

resource "aws_elastic_beanstalk_environment" "your-beanstalk" {
   ... 
   setting {
      namespace = "aws:autoscaling:launchconfiguration"
      name      = "EC2KeyName"
      value     = "${aws_key_pair.your-ssh-key.key_name}"
   }
   ...
}

그런 다음 해당 키를 사용하여 상자에 SSH로 연결할 수 있습니다.


1

eb init환경을 사용하여 CLI를 설정 한 경우 다음과 같이 간단해야합니다.

eb ssh --setup 새 키 페어를 만들거나 존재하는 경우 기존 키 페어를 사용할 수 있습니다.

eb use내가 아직하지 않았지만 기존 환경에 연결할 수도 있습니다 .

CLI 설치에 대한 자세한 내용-https: //docs.aws.amazon.com/console/elasticbeanstalk/eb-cli-install


1

Mac에서는 brew를 사용하여 cli를 설치할 수 있습니다.

brew install awsebcli

명령 행 도구를 사용하여 다음을 사용하여 ssh를 수행 할 수 있습니다.

eb ssh environment-name

다른 작업도 수행합니다. 이것은 당신이 당신의 IP에서 ssh를 허용하는 보안 그룹을 추가했다고 가정합니다.


0

환경 구성에 따라 환경 용으로 생성 된 EC2 인스턴스에 퍼블릭 IP 주소가 없을 수 있습니다. 다음을 통해 확인할 수 있습니다.

  1. 로 이동 EC2 콘솔로
  2. 인스턴스를 찾고 설명을 확인하십시오. 탭을 하십시오.
  3. 퍼블릭 IP가없는 경우 ...
  4. 탄력적 IP 클릭탐색에서 를
  5. 딸깍 하는 소리 새 주소 할당을
  6. 아마존을 선택하십시오수영장으로 을
  7. 할당을 클릭하십시오

마지막으로 새 EIP를 선택 하고 작업 메뉴에서 주소 연결을 선택하십시오 . 해당 IP를 EC2 인스턴스와 연결하십시오. 당신은을 사용하여 연결할 수 있어야합니다eb ssh지금 .

을 실행하여 연결 세부 정보를 재설정 할 수 있습니다 eb ssh --setup.


-5

나는 또한 얼마 전에 같은 문제에 부딪쳤다. 키 파일을 사용하고 싶었지만 Amazon은 기존 EC2 서버에 키 파일을 추가 할 수 없다고 말합니다. 첫 번째 Beanstalk 애플리케이션의 경우 Amazon이 애플리케이션을 사전 구성합니다. 새 애플리케이션을 작성해야하며 Beanstalk 앱을 실행하는 EC2 서버를 구성하여 이전 pem 파일 (Putty를 사용하는 경우 PPK)을 사용하거나 새 애플리케이션을 작성할 수 있습니다. 이제 SSH 할 수 있어야합니다.

여기에 이미지 설명을 입력하십시오

그런 다음 이전 앱을 구성하고 삭제하십시오.


3
이것은 잘못이다. 기존 beantalk 앱에 키 파일을 추가 할 수 있습니다. 자체를 죽이거나 다시 빌드합니다. 애플리케이션을 직접 삭제 / 생성 할 필요는 없습니다.
Nate
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.