개요
클라우드에서 Linux 서버를 생성하면 최초에 해당 서버의 pem key를 제공받는다.
AWS의 경우 EC2 인스턴스를 연결하고 키 페어를 생성하면 자동으로 접근 설정이 되어 바로 pem key로 서버 접속이 가능하다.
하지만 다른 클라우드의 경우 설정이 자동으로 되지 않는 경우도 있고,
해당 접속 정보를 수정해야 할 일이 생기거나 다른 key로도 접속을 할 수 있도록 설정해야 하는 경우가 많다.
서버에 접속할 때 비밀번호를 입력하고 들어가는 것도 가능하지만 매번 입력 및 관리하는 게 번거로워서 pem key로 로그인하도록 설정을 해두고 바로 접속하도록 구성을 해두는데,
간단한 작업이지만 세팅을 할 때마다 자주 헷갈리는 부분이 있어 이 기회에 정리하고자 한다.
pem key 권한 설정
서버 접속을 위해 가지고 있는 pem key의 권한을 설정해줘야 한다.
sudo chmod 400 test.pem
권한을 설정해주지 않으면 서버에 접속할 때 아래와 같은 오류가 발생할 수 있다.
공개 키 생성
개인 키(pem key)를 가지고 있다면 해당 개인 키로부터 공개 키를 확인할 수 있다.
이미 공개 키를 가지고 있다면 이 부분은 생략하도록 하고,
가지고 있지 않다면 아래 명령어를 통해 공개 키를 확인해 보자.
ssh-keygen -y -f test.pem
위 명령어의 결과로 test.pem key 파일의 공개 키가 출력된다.
서버 내 ssh 설정
서버에 접속하고 홈 디렉토리의 .ssh 폴더에 authorized_keys 파일을 생성한다.
.ssh 폴더가 없다면 생성해야 한다.
이후 해당 파일에 위에서 생성한 공개 키를 입력하면 된다.
위에서 확인한 공개 키의 내용을 복사하여 authorized_keys 파일에 붙여넣자.
이미 authorized_keys 파일에 내용이 있는 경우 새로운 줄에 붙여넣으면 된다.
# .ssh 폴더 생성 (이미 있으면 생략)
mkdir ~/.ssh
# authorized_keys
vi ~/.ssh/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 메시지가 출력되거나 혹은 그냥 비밀번호 입력 창만 나타난다.
참고 : 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! 오류 발생 시
가끔 원격 서버의 설정을 건드리거나 서버를 다시 생성하고 공인 IP를 동일하게 연결했을 때 원격 서버에 접속하려고 하면 위와 같은 오류를 마주칠 때가 있다.
이 때는 로컬의 known_hosts 파일에서 해당 서버 IP를 찾아 해당 줄을 삭제하고 다시 접속하면 해결된다.
vi ~/.ssh/known_hosts
마무리
개요 섹션에서 간단한 작업이라고 소개했는데,
정작 작성하면서 권한 설정까지 놓고 보니 생각보다 신경쓸 부분이 많았다.
추가로 authorized_keys의 공개 키 내용이 변경되면 해당 pem key로는 접속이 불가능하므로 반드시 주의가 필요하다.
잘못 설정하여 서버 접속이 불가능하게 되어 복구하는 데 애를 먹었던 기억은 지금 생각해도 끔찍하다..
'Linux' 카테고리의 다른 글
[Linux] scp 명령어로 폴더 이동 시 주의할 점 (0) | 2023.06.19 |
---|