Last Updated on 2023-04-23 by BallPen
GCP에 ssh 접속할 때 ‘permission denied (publickey)’ 문제의 해법
GCP ssh 접속 방법을 소개하는 많은 인터넷 자료들이 있는데요. 대부분 ssh 접속 거부시 그 해법을 다루고 있습니다.
하지만 저와 같은 리눅스 초보에게는 매우 어려운 설명들이 많아요. 따라하기도 무척 힘들었어요.
사실 VM 인스턴스의 디스크 용량 점검 등을 위해 ssh 외부 접속이 이루어진다면 아주 편리할 거에요.
아무튼 이곳 저곳 참고하고 구글 클라우드 매뉴얼 참고해서 결국 문제를 해결했습니다.
이번글에서는 그 해법을 공유하고자 합니다.
Contents
1. GCP ssh 접속 거부 문제
저는 맥 컴퓨터 터미널에서 ssh를 이용해 GCP(구글 클라우드 플랫폼)의 VM 인스턴스로 접속을 시도했어요.
이때 맥컴퓨터를 클라이언트, VM 인스턴스를 서버로 명칭을 정하도록 하겠습니다. 한편 서버측인 VM 인스턴스에는 ‘server’라는 계정이 있고, 그 인스턴스의 외부 ip는 34.74.157.3입니다.
아래 [그림 1]은 클라이언트에서 ‘ssh server@34.74.157.3’ 명령어로 VM 인스턴스에 접속을 시도한 모습입니다.
그 결과 ‘서버 인증이 이루어지지 않았다’는 안내 문구가 있습니다. ‘그래도 접속하겠냐’는 질문에 ‘yes’를 입력하면 아래 [그림 2]의 화면이 출력됩니다.
주의문과 함께 “Permission denied (publickey)”라는 접속 거부 문구가 출력됩니다.
2. GCP ssh 접속 거부 문제 해법
GCP에 ssh 접속이 거부되는 이유는, ssh 통신에 필요한 공개키가 GCP VM 인스턴스 서버에 등록되지 않았기 때문입니다.
그러니까 ssh 접속중 통신 암호화 및 복호화를 위해서는 클라이언트에는 개인키가, 서버에는 공개키가 사전에 각각 등록되어 있어야 하는데 서버에 공개키를 등록하지 않았기 때문에 통신이 거부된다는 거에요.
그렇다면 개인키와 공개키는 어디에서 만들어야 할까요? 바로 클라이언트 컴퓨터에서 개인키와 공개키를 모두 만들고, 그중 공개키를 복사하여 VM 인스턴스에 등록해주어야 합니다.
이제 해법을 알았으니 차근 차근 ssh 접속을 준비해보겠습니다. 아래의 순서대로 하나씩 하나씩 해보면 접속에 성공할거에요.
2-1. GCP vm 인스턴스의 ip 확인
아래 [그림 3]과 같이 GCP 대시보드에서 VM 인스턴스의 ssh를 실행합니다.
그리고 gcp vm 인스턴스의 외부 IP를 확인합니다. 이를 알아야 클라이언트에서 ssh접속을 시도할 수 있으니까요.
아래의 명령어를 복사하여 vm 인스턴스 ssh에 입력하세요.
curl ipinfo.io/ip
그 결과 아래 [그림 4]와 같이 ip 주소를 확인할 수 있습니다.
저의 경우 34.74.157.3이 VM 인스턴스의 외부 ip입니다.
이 방법 말고 구글 클라우드 ‘대시 보드 \rightarrow VPC 네트워크 \rightarrow IP주소’로 이동하여 외부 ip를 확인해도 됩니다.
2-2. 클라이언트에서 개인키와 공개키 생성
이번에는 클라이언트 컴퓨터의 터미널로 오세요.
저는 맥 컴퓨터를 클라이언트로 활용할 예정입니다. 맥 말고도 여러분들이 접속에 사용할 터미널이 있을 테니 그것을 그대로 사용하시면 됩니다.
GCP VM 인스턴스 접속에 필요한 개인키와 공개키를 생성하기 위해 클라이언트에 아래 명령어를 복사해서 입력하세요.
ssh-keygen -C {VM 인스턴스 사용자계정}
이때 {VM 인스턴스 사용자계정}에는 VM 인스턴스에 만들어진 계정을 뜻합니다. 저는 VM 인스턴스에 ‘server’라는 계정을 미리 만들어 두었어요.
그 ‘server’계정을 위한 개인키와 공개키는 아래 [그림 5]와 같이 ‘ssh-keygen -C server’라고 입력하면 됩니다.
passphrase를 입력하라고 중간에 나오는데 그냥 엔터쳐서 넘어갔습니다.
출력화면을 보면 Your identification은 /users/{MAC계정명}/.ssh/id_rsa에 저장되었다고 나오는데, 이것이 개인키입니다. 그리고 Your public key는 /users/{MAC계정명}/.ssh/id_rsa.pub에 저장하였다고 나오는데, 이것이 공개키입니다.
이제 생성된 공개키를 GCP VM 인스턴스에 등록해 주면 됩니다.
2-3. 공개키를 GCP VM 인스턴스에 등록
생성된 공개키는 클라이언트 컴퓨터의 /users/{MAC계정명}/.ssh/id_rsa.pub 파일에 저장되어 있어요.
파일의 내용을 확인하고 복사하기 위해서는 다음의 명령어를 클라이언트 컴퓨터에 입력합니다.
cat /users/{계정명}/.ssh/id_rsa.pub
그러면 아래 [그림 6]과 같이 공개키의 내용을 볼 수 있어요.
복잡한 알파벳의 조합으로 되어 있습니다.
마우스로 드래그 해서 모든 내용을 선택한 후 복사하세요. 한글자도 빠트리면 안됩니다.
이제는 ‘GCP 대시보드 \rightarrow VM 인스턴스’로 이동합니다.
그리고 아래 [그림 7]과 같이 VM 인스턴스 조회 화면에서 인스턴스 이름을 클릭합니다.
그러면 인스턴스 세부 정보가 출력되는데요. 상단 메뉴에서 ‘수정’ 버튼을 클릭하세요.
다른 설정은 손대지 마시고 아래쪽으로 스크롤해서 내려가면 SSH 키 항목을 찾을 수 있어요.
그러면 아래 [그림 8]과 같은 화면을 볼 수 있습니다.
그리고 ‘항목추가’ 버튼을 클릭하세요.
그러면 새로 입력할 수 있는 키 박스가 만들어지는데요. 그곳에 아까 클라이언트 컴퓨터에서 복사했던 공개키를 붙여넣기 하세요.
마지막으로 수정 화면 아래쪽에 있는 ‘저장’ 버튼을 클릭하세요. 이로서 클라이언트에서 생성한 공개키를 VM 인스턴스에 등록하였습니다.
2-4. GCP ssh 접속 성공
지금까지 절차가 성공적으로 마무리 되었다면 GCP에 ssh 접속이 성공적으로 이루어져야 합니다. 아래의 명령어를 참고해서 여러분의 클라이언트 컴퓨터에 입력해보세요.
ssh {VM 인스턴스 사용자계정}@{ip}
예를 들어 저의 경우에는 아래와 같이 입력했습니다.
시원하게 접속이 이루어지는 것을 볼 수 있습니다.
이제 맥 컴퓨터에서 GCP VM 인스턴스를 간편하게 접속할 수 있게 되었어요.
4 thoughts on “GCP ssh 접속 방법”