[Linux] pem key로 서버 접속하기

2023. 7. 19. 22:10·Linux
반응형

개요

클라우드에서 Linux 서버를 생성하면 최초에 해당 서버의 pem key를 제공받는다.

AWS의 경우 EC2 인스턴스를 연결하고 키 페어를 생성하면 자동으로 접근 설정이 되어 바로 pem key로 서버 접속이 가능하다.

하지만 다른 클라우드의 경우 설정이 자동으로 되지 않는 경우도 있고,

해당 접속 정보를 수정해야 할 일이 생기거나 다른 key로도 접속을 할 수 있도록 설정해야 하는 경우가 많다.

 

서버에 접속할 때 비밀번호를 입력하고 들어가는 것도 가능하지만 매번 입력 및 관리하는 게 번거로워서 pem key로 로그인하도록 설정을 해두고 바로 접속하도록 구성을 해두는데,

간단한 작업이지만 세팅을 할 때마다 자주 헷갈리는 부분이 있어 이 기회에 정리하고자 한다.

 

pem key 권한 설정

서버 접속을 위해 가지고 있는 pem key의 권한을 설정해줘야 한다.

sudo chmod 400 test.pem

 

권한을 설정해주지 않으면 서버에 접속할 때 아래와 같은 오류가 발생할 수 있다.

pem key의 권한이 과하게 열려있다고 경고하며 서버 접속에 실패한 모습

 

공개 키 생성

개인 키(pem key)를 가지고 있다면 해당 개인 키로부터 공개 키를 확인할 수 있다.

이미 공개 키를 가지고 있다면 이 부분은 생략하도록 하고,

가지고 있지 않다면 아래 명령어를 통해 공개 키를 확인해 보자.

ssh-keygen -y -f test.pem

위 명령어의 결과로 test.pem key 파일의 공개 키가 출력된다.

pem key로 공개 키를 생성한 모습

 

서버 내 ssh 설정

서버에 접속하고 홈 디렉토리의 .ssh 폴더에 authorized_keys 파일을 생성한다.

.ssh 폴더가 없다면 생성해야 한다.

 

이후 해당 파일에 위에서 생성한 공개 키를 입력하면 된다.

위에서 확인한 공개 키의 내용을 복사하여 authorized_keys 파일에 붙여넣자.

이미 authorized_keys 파일에 내용이 있는 경우 새로운 줄에 붙여넣으면 된다.

# .ssh 폴더 생성 (이미 있으면 생략)
mkdir ~/.ssh

# authorized_keys
vi ~/.ssh/authorized_keys

authorized_keys 안에 공개 키를 입력한 모습

이후 권한을 아래와 같이 설정한다.

sudo chown -R {user}:{user} ~/.ssh # ubuntu의 경우 ubuntu:ubuntu
sudo chmod 700 ~/.ssh
sudo chmod 600 ~/.ssh/authorized_keys

위와 같이 권한을 설정하지 않으면 서버에 접속할 때 key로 접속이 되지 않을 수 있다.

이 때는 Server refused our key 메시지가 출력되거나 혹은 그냥 비밀번호 입력 창만 나타난다.

pem key로 서버 접속에 실패한 모습

참고 : https://repost.aws/ko/knowledge-center/ec2-server-refused-our-key
 

EC2 인스턴스에 연결할 때 “서버에서 키 거부” 오류 해결

SSH를 사용하여 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 연결할 때 “서버에서 키 거부”라는 오류 메시지가 나타납니다.

repost.aws

 

서버 접속

이후 ssh 명령어의 -i 옵션을 통해 pem key를 지정하고 서버에 접속한다.

ssh -i test.pem {username}@{server_ip_address}

만약 PuTTY를 사용하고 있다면 pem key를 ppk 파일로 변환하고,

해당 ppk 파일을 지정해주면 서버 접속이 가능하다.

 

참고 - 서버 기본 사용자 이름 찾기

해당 서버의 사용자 이름(위 명령어에서 {username} 부분)을 잘 모르겠을 땐 각 클라우드의 매뉴얼에서 찾거나 서버에 접속한 후 확인해야 한다.

필자가 직접 경험해 봤던 클라우드의 경우 기본 사용자 이름은 아래와 같으므로 만약 동일하다면 아래에서 확인해 보자.

NCP : ncloud
AWS : https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/managing-users.html#ami-default-user-names
 

Linux 인스턴스에서 사용자 관리 - Amazon Elastic Compute Cloud

퍼블릭 키를 연속된 한 줄에 붙여넣는지 확인합니다. 퍼블릭 키는 여러 줄로 분할되지 않아야 합니다.

docs.aws.amazon.com

 

참고 - REMOTE HOST IDENTIFICATION HAS CHANGED! 오류 발생 시

host key 인증에 실패하여 서버 접속에 실패한 모습

가끔 원격 서버의 설정을 건드리거나 서버를 다시 생성하고 공인 IP를 동일하게 연결했을 때 원격 서버에 접속하려고 하면 위와 같은 오류를 마주칠 때가 있다.

이 때는 로컬의 known_hosts 파일에서 해당 서버 IP를 찾아 해당 줄을 삭제하고 다시 접속하면 해결된다.

vi ~/.ssh/known_hosts

 

마무리

개요 섹션에서 간단한 작업이라고 소개했는데,

정작 작성하면서 권한 설정까지 놓고 보니 생각보다 신경쓸 부분이 많았다.

 

추가로 authorized_keys의 공개 키 내용이 변경되면 해당 pem key로는 접속이 불가능하므로 반드시 주의가 필요하다.

잘못 설정하여 서버 접속이 불가능하게 되어 복구하는 데 애를 먹었던 기억은 지금 생각해도 끔찍하다..

반응형

'Linux' 카테고리의 다른 글

[Linux] scp 명령어로 폴더 이동 시 주의할 점  (0) 2023.06.19
'Linux' 카테고리의 다른 글
  • [Linux] scp 명령어로 폴더 이동 시 주의할 점
hojun-dev
hojun-dev
개발과 함께하는 일상을 그리는 블로그입니다.
  • hojun-dev
    개발 일상
    hojun-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (63) N
      • Java & Spring (15)
      • Kubernetes (11) N
      • Javascript (2)
      • Linux (2)
      • Setting (16)
      • Work (4)
      • 일상 (10)
      • 항해플러스 (3)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
hojun-dev
[Linux] pem key로 서버 접속하기
상단으로

티스토리툴바