EC2의 SSH 공개 키 인증에 심플하게 빠진 이야기

아마존 EC2의 OS 사용자는 돈을 지불한 뒤 "이런 일을 계속하고 있으니 문제 없겠지"라고 생각하며 함정이 있음을 다시 한번 깨달았다.
일 때문에 재고품을 꺼내기가 어려워서 작은 부분을 꺼내려고 합니다.
블로그를 쓸 핑계가 없어요.

매혹적인 경과


EC2 구축에는 초기ec2-user 이외에 개인용(내 다른 사람이 아닌) OS 사용자가 결제했다.
OS 사용자의 SSH 인증이 핵심 방식이지만 이번 절차는'사전에 제작한 공개 키를 받아 EC2에 올리는 것'이다.
OS 사용자를 만들고 미리 받은 공개 키를 거기에 두고 권한을 조정하고 SG를 켜면 문제 없이 받아들여야 하는데 왜 그 사람의 SSH가 인증을 통과하지 못하는지.
나는 소박함에 빠졌다.
(겸사겸사 말씀드리지만,ec2-user가 올라갔습니다)
※ 이 절차 참조: https://qiita.com/aiandrox/items/98ad9b7551481d890916#편집 사용자 추가

컨디션


EC2 (Amazon Linux 2)
SSH의 고객은 Windows입니다.

선결


EC2에 구성된 공개 키는 SECSH(ssh.com) 형식으로 구성됩니다.
OpenSSH 형식으로 전환하여 순조롭게 해결되었습니다.
EC2라기보다는 Linux 이야기...
이러한 형식의 변환을 수행하는 명령의 예는 다음과 같습니다.
"hogeuser"를 대상으로 하는 경우
ssh-keygen -i -f /home/hogeuser/.ssh/(もらったSECSH公開鍵ファイル) >> /home/hogeuser/.ssh/authorized_keys

실제 공개 키 예


나는 원래 공개 키의 종류가 무엇인지 몰랐다.
다양한 블로그가 있지만 아래의 내용은 이해하기 쉽다.
참조 소스: https://qiita.com/ponsuke0531/items/7b34347213660c80bc95

• SECSH 형식 (ssh.com)


이번에 자기가 반한 놈.
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "{コメント}"
AAAA{最初の行}
{改行あり文字列}
---- END SSH2 PUBLIC KEY ----

· OpenSSH 형식


그저 그렇다.어떤 도구·명령으로 키를 생성했는지에 따라 미묘한 차이가 있을 수 있습니다.
ssh-rsa AAAA{改行なし文字列} {ユーザ名}@{PC名}

실제 절차


이 같은 해소 방법에 따라 이번 OS 사용자는 다음과 같이 추가됐다.
  • OS 사용자 생성, sudo 인증
    ec2-user로 실시.
    OS 사용자 이름: hogeuser
  • sudo su -
    useradd hogeuser
    usermod -G wheel hogeuser
    passwd hogeuser
    
  • OS 사용자의ssh 디렉터리 생성
  • su - hogeuser
    cd /home/hogeuser
    mkdir .ssh
    cd .ssh
    

  • SECSH 형식의 공개 키 파일 구성
    다양한 방치 방법, SCP 같은 게 있으면 돼요.
    놓는 곳은 위에 쓰여 있다/home/[ユーザー名。例だとhogeuser]/.ssh/.

  • 공개 키 파일의 SECSH→OpenSSH 변환(이번에 전달하고 싶은 것)
  • ssh-keygen -i -f /home/hogeuser/.ssh/[もらったSECSH公開鍵ファイル] >> /home/hogeuser/.ssh/authorized_keys
    
    ※ 참고: https://qiita.com/marcie001/items/47a23cfeed00db783d39
  • 권한 조정
  • chown hogeuser:hogeuser authorized_keys
    chmod 600 authorized_keys
    cd ../
    chown -R hogeuser:hogeuser .ssh
    chmod 700 .ssh
    
    SSH를 진행할 수 있습니다.

    더욱 고려한다


    AWS의 문서를 보았는데 EC2에 대한 관건적인 요구 사항은 다음과 같다.
    주요 요구 사항
    • 다음 형식을 지원합니다.
    ·OpenSSH 공용 키 형식(~/.ssh/authrized keys 형식)은 EC2 Instance Connect API를 사용할 때 SSH로 연결할 때도 지원한다.
    • Base64 인코딩된 DER 형식
    ・ SSH 공통 키 파일 형식(RFC 4716을 통해 지정)
    • SSH 개인 키 파일 형식은 PEM이어야 함
    · RSA 키를 만듭니다.DSA 키는 Amazon EC2에서 사용할 수 없습니다.
    · 지원되는 길이는 1024, 2048, 4096입니다.EC2 Instance Connect API에서 SSH 연결을 사용하는 경우 2048 및 4096 길이가 지원됩니다.
    https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-key-pairs.html#how-to-generate-your-own-key-and-import-it-to-aws
    이것은 EC2의 초기 키를 가져올 때의 일일 뿐이라고 생각하지만, 이 문서를 계속 읽으면 다음과 같은 항목이 있습니다.
    https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-key-pairs.html#replacing-key-pair
    다음은ec2-user의 열쇠 교환 순서입니다.
    바뀐 것이기 때문에 그때도 키 형식 공개에 유의해야 한다는 것으로, AWS의 키 쌍 규격만은 아닌 것으로 추정된다.
    키 쌍 추가 또는 교체
    1. Amazon EC2 콘솔 또는 타사 도구를 사용하여 새 키 쌍을 만듭니다.
    2. 새 키 쌍에서 공공 키를 가져옵니다.자세한 내용은 "키 쌍의 공공 키 가져오기"를 참고하십시오.
    3. 기존의 개인 키 파일 연결 실례를 사용합니다.
    4. 인스턴스에 텍스트 편집기를 사용합니다.ssh/authorized_키 파일을 엽니다.기존 공공 키 정보 아래의 새 키 쌍에서 공공 키를 붙여넣습니다.파일을 저장합니다.
    5. 실례에서 새로운 개인 키 파일 연결을 끊고 사용합니다.
    6.(선택 가능) 기존 키 쌍이 스왑된 경우 인스턴스를 연결합니다.ssh/authorized_키스 파일에서 원시 키 쌍의 공공 키 정보를 삭제합니다.
    자신의 독해 능력은 여기까지가 한계다.
    또한 해당 컨텐트에 맞는 문서를 찾았지만 "OS 사용자의 키 인증에는 OpenSSH 방식의 공개 키가 있어야 한다"는 내용이 기재되지 않았습니다.
    EC2 OS 사용자에 대한 추가 문서에서 OpenSSH 형식의 공개 키를 먼저 제작하였습니다.
    다른 형식에 특별히 주의하지 않았다.즉, 이것은 당연한 것이다
    SSH의 설정 파일 등에 증거가 있을 수 있습니다.
    이번엔 여기까지.
    솔직히 AWS의 내용도 문제없다고 생각하지만 공개 키의 형식에 주의하고 싶습니다.

    결론

  • EC2에 배치된 공개 키는 OpenSSH 형식입니다.
  • 발송된 공개 키 파일을 보십시오.
  • 그리고 본 후에 OpenSSH 형식이 아닌 상황을 주의해야 한다...