EC2 : 인스턴스의 여러 ssh 키?


12

EC2 인스턴스에 SSH로 연결하기 위해 둘 이상의 개인 키를 생성 할 수 있습니까? 이것에 대한 일반적인 모범 사례는 무엇입니까? 서버에 SSH를 연결해야하는 여러 사용자가 있으며 하나의 키를 배포하는 것만으로는 효과가 없습니다. 따라서 키를 변경하고 재배포하지 않는 한 사용자가 서버에 SSH를 연결할 수 없도록 할 수 없습니다.



팀의 SSH 키 관리를 수행 할 때는 Userify 또는 SSH UKM (면책 조항 : Userify에서 근무 함)과 같은 특수 도구를 보는 것이 가장 좋습니다.
Jamieson Becker

답변:


5

물론; 모든 관련 공개 키를 이미지에 넣으면 바로 갈 수 있습니다. 구성 관리 시스템을 사용하여 SSH 키를 관리하는 것을 선호합니다. 이렇게하면 실행중인 시스템에서도 사용자의 액세스 권한을 취소하는 것이 매우 간단합니다. LDAP에 모든 SSH 키를 저장하는 것과 같이 다른 자격 증명과 마찬가지로 SSH 키를 중앙 집중화하는 것과 같이 훨씬 더 많은 ... "상상적인"말로 이것을 처리하는 방법이 있습니다.


2
SSH 키를 LDAP에 저장하려면 Kerberos에 대해 알아야합니다.
84104

1
Kerberos를 배포했습니다. 개인적으로, 나는 그것이 문제를 찾아내는 해결책이라고 생각합니다. 그리고 그것은 다소 까다 롭고 성가신 해결책입니다.
womble

2
@Ash : 질문은 주석이 아니라 질문에 들어갑니다.
womble

1
위의 의견을 무시하려고했지만 사이트에 새로운 사람이 있다면 주어진 답변, 설명 또는 오해의 구현과 관련된 의견이 있으면 분명히해야한다는 것을 분명히해야한다고 느꼈습니다. 의견에서 OP가 발생할 수있는 혼동을 명확히하기 위해 답변을 편집 할 수 있도록합니다.
Mazatec

2
아니요, 답변이 원래 질문 한 내용을 해결하지 못한 경우 의견에 명확한 질문을해야합니다. 답변 내용에 따라 새로운 질문을하려면 페이지 오른쪽 상단에있는 "질문과 대답"버튼을 사용하여 새로운 질문을해야합니다. 토론 포럼이 아닌 Q & A 사이트입니다.
womble

6

표준 ssh 메커니즘을 사용할 수도 있습니다. 가장 좋은 방법은 사용자가 ssh-keygen자신의 키 페어를 생성하기 위해 컴퓨터 에서 실행하는 것입니다 . 그런 다음 사용자 ~/.ssh/id_rsa.pub(또는 선택한 알고리즘에 따라 id_dsa.pub) 를 전송 .ssh/authorized_keys하고 액세스 할 수있는 사용자 계정의 홈 디렉토리에있는 대상 호스트 의 컨텐츠를 추가 합니다. 파일에 둘 이상의 키가있을 수 있습니다. 한 줄에 하나씩. 그리고 그게 다야! 동일한 공개 키 (id_rsa.pub)를 여러 호스트에서 사용할 수 있으며 항상 사용자를 식별합니다.

ssh-keygen을 실행하고 ~ / .ssh / id_rsa (또는 id_dsa)를 사용자에게 게시합니다. 그리고 사용자는 ~ / .ssh / id_rsa에 파일을 저장합니다. 권한을 해당 파일의 600 (-rw -------)으로 변경해야합니다. 그렇지 않으면 ssh가이를 수락하지 않습니다. 개인 키가 아마도 전자 메일을 통해 배포되기 때문에 보안 수준이 낮습니다.

PuTTYgen을 사용하여 PuTTY에서 수행 할 수도 있습니다.


1

더 간단한 방법은 다음과 같습니다.

Linux / Mac 사용자의 경우 :

  1. 공개 및 개인 키를 작성하려면 다음 명령을 사용하십시오. $ ssh-keygen -t rsa -b 4096

  2. 공개 키를 S3 버킷의 폴더에 업로드하십시오. 예를 들어 : S3> MyBucket> Keypair

  3. 개인 키를 저장하고 보호하십시오.

Windows 사용자의 경우 :

  1. puttygen을 사용하여 키를 생성하십시오.
  2. DigitalOcean 에 따라 SSH 키를 작성하십시오.
  3. 공개 키를 S3> MyBucket> Keypair에 업로드
  4. 개인 키를 저장하고 보호하십시오.

Linux AMI를 시작하는 동안 다음 단계가 중요합니다.

  1. IAM 역할에 AmazonS3FullAccess 정책으로 생성 된 역할이 있는지 확인하십시오. 이를 통해 인스턴스는 S3 버킷에 액세스하는 역할을 맡을 수 있습니다. 이것은 S3에서 공개 키를 읽고 사용자 프로파일에 복사하는 데 필요합니다.

  2. 인스턴스 세부 사항 구성> 고급 세부 사항 (텍스트)의 사용자 데이터 섹션 아래에 다음 코드를 추가하십시오.

    #!/bin/bash
    usermod user 1
    usermod -aG wheel user1
    mkdir /home/user1/.ssh/
    aws s3 cp s3://MyBucket    /Keypair/user1-pub.pub /home/user1/.ssh/authorized_keys
    
    useradd user2
    usermod -aG wheel user2
    mkdir /home/user2/.ssh/
    aws s3 cp s3://MyBucket   /Keypair/user2-pub.pub /home/user2/.ssh/authorized_keys
    
    sudo -i 
    echo “user1 ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers
    echo “user2 ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers
    
    yum update -y
    

이 설정은 User1User2를 만들어 sudo 사용자에게 추가합니다 . AWS S3은 cp 명령을 복사 사용자에게 자신의 S3 폴더에서 공개 키 .ssh/authorized_keys path. 마지막 섹션은 비밀번호없이 관리자로 명령을 실행하는 것입니다.

여기에서 권장 할 수있는 많은 보안 향상 기능이 있습니다. 이 예제에서 명시 적으로 사용되지는 않지만 S3 버킷 액세스를 특정 버킷으로 제한하고 sudo에서 비밀번호 사용을 비활성화하는 보안 영향을 아는 것은 강조 할 수있는 몇 가지 사항입니다. 특정 요구에 따라 현명하게 사용하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.