목적 : GCP에서는 SSH key 방식을 통한 접근방법을 기본적으로 지원합니다.
ID/Password로 접근시에는 OS에서 sshd config을 변경해주어야합니다.
GCP Console로 접근하는 방안은 편하지만, 시스템 운영자, 어플리케이션 담당자들에게 GCP Console 접근 권한을 주는 것은 IAM을 사용하여 권한을 적절하게 주어야 하고, 정책적으로 GCP관리자에 외에는 GCP Console에 접근 불가할 수도 있습니다.
하여 본 문서에서는 ssh key 발급을 통해 비공개키를 가지고 GCP상에 존재하는 GCE에 접근하는 방법을 작성합니다.
- SSH key접속에 대한 GCP Docs
https://cloud.google.com/compute/docs/connect/create-ssh-keys?hl=ko
- SSHKey 생성(Gen) 방법
Mac, Linux는 터미널, Windows는 CMD, Powershell을 이용하여 아래의 명령어로 생성합니다.
ssh-keygen -t rsa -f ~/.ssh/KEY_FILENAME -C USERNAME -b 2048
ssh-keygen 옵션별 설명입니다.
상세내용은 ssh-keygen --help 확인할 수 있습니다.
-t : dsa, ecdsa, rsa등 암호화 방법을 정합니다. 기본 값은 rsa 이므로, GCP 접속용을 만든다면 해당 옵션을 빼도 무방합니다.
테스트시 ecdsa암호화도 GCP에서는 적용됩니다.
-f : 키값 저장위치 기본설정은 ~/.ssh/ 입니다.
-C : 필수로 해야되는 옵션입니다. Comment를 작성하는 옵션이지만, 해당 옵션에 작성하면 ID로 인식됩니다.
-b : 생성할 키의 비트 수를 지정합니다. 미설정시 기본 값은 3072입니다. 2048 이상이면 문제 없습니다.
키를 만들때 passphrase부분은 공란으로 넘어갑니다.
입력시에는 OS login시의 패스워드가 아닌, Key의 Password를 입력해야합니다.
선택한 암호화 값으로 암호화 되면 파일이 생성되고 마무리됩니다.
위의 예시화면에서는 RSA 3072로 생성됨을 확인 할 수 있습니다.
- GCP 적용
신규 생성이나 수정 모두 동일합니다.
메뉴는 아래와 같이 접근합니다.
Compute Engine > VM 선택 > 보안 및 액세스 > SSH키 >
ssh key-gen으로 생성한 파일 중 pub (공개키) 파일을 cat, 메모장으로 열어서 내용을 확인합니다.
해당 내용을 SSH 키에 입력합니다.
입력 후 수정을 완료하면, 자동으로 사용자 이름과 키를 구분하여 아래와 같이 보여줍니다.
- 접속
ssh 명령어로는 아래와 같이 접속하며, CRT, Putty등의 접속 툴을 사용한다면 key가 있는 값을 지정합니다.
ssh -i "ssh private key 위치" id@serverIP -p"port"
- 옵션
-i : ssh private key 위치를 지정합니다.
-p : 기본 포트를 변경하였을 경우 선택후 변경된 포트번호를 입력합니다.
cat이나 메모장으로 PRIVATE KEY를 확인하면 아래와 같이 보여집니다.
첫줄과 마지막줄에 PRIVATE KEY로 되어있으므로, 접속키가 햇갈린다면 파일을 열어 확인합니다.
- 응용 - 템플릿을 사용하여 자동등록하기
템플릿에 등록해두고, 신규로 생성되는 VM은 별도로 설정할 필요 없이 SSH Key를 적용할 수 있습니다.
Compute Engine > 인스턴스 템플릿 > 템플릿 생성
고급>보안> “수동으로 생성된 SSH키 추가”
이후로는 신규로 생성되는 VM에는 자동으로 Key가 적용됩니다.
- 응용 - 메타데이터 사용
Compute Engine > 설정 > 메타데이터 > SSH키
메타데이터에 등록하면, 해당 프로젝트에 등록된 모든 인스턴스에 적용됩니다.
전부 적용되므로 유의해서 사용하여야 합니다.
- 유의사항
문서에서 작업한 것은 “수동 키 관리” 입니다.
저장된 SSH키로 접속하면 sudo 액세스 권한이 있습니다.
그만큼 권한이 크므로, 관리가 필요합니다.
즉 퇴사, 부서이동등 권한 조정이 필요할때 지체말고 바로 키를 삭제해야 합니다.
2024.08.21 추가
위와 같이 설정 후 접속시 putty나 CRT 프로그램을 사용할 수도 있고..
간단히 터미널에서 접속할 수도 있습니다.
mac 터미널에서 설정시
/Users/사용자id/.ssh 디렉토리에서 config 파일 내용을 보면
아래와 같이 설정을 할 수 있습니다.
Host oci // 별칭
HostName 111.111.111.11 // IP주소
User opc // 접속할 ID
IdentityFile /Users/linux1547/.ssh/oci.pem // 접속할 서버의 identityfile 위치
Port 22 // ssh port번호
TCPKeepAlive yes //주기적으로 TCP keepalive 메시지를 보내도록 설정
IdentitiesOnly yes // ssh-agent에서 제공하는 모든 인증 키 대신, ssh_config 파일에 명시된 인증 키만 사용
-- 예시
Host ubuntu
HostName 10.10.10.10
User ubuntu
IdentityFile /Users/.ssh/ubuntu.pem
Port 22
TCPKeepAlive yes
IdentitiesOnly yes
위와 같이 설정 후 터미널에서 아래 화면과 같이 ssh 별칭만 입력하면 바로 접속이 가능합니다.
(ssh 여러 옵션을 사용안해도 간편하게 접속가능)
'Cloud > GCP' 카테고리의 다른 글
[Security] 서비스 경계 브리지를 사용한 GCP 리소스간 연결방법 (2) | 2024.11.19 |
---|---|
GCP의 Free Tier로 3-Tire 구축 테스트 내용정리 (0) | 2024.10.16 |
GCP Web console 접근을 위한 X-windows 구성 (0) | 2024.10.16 |
Google Cloud Next ’24 Security 참석 (0) | 2024.08.19 |
[GCP] WebConsole 접근 방안 (0) | 2024.08.05 |
Squid Proxy를 통한 GCP Web Console 접속 (0) | 2024.07.30 |
[GCP] On-Premise to GCP Serverless 서비스를 VPN(Private망)으로 연결하여 사용 (2) | 2024.07.28 |