SSH로 원격 서버 root 계정 접속 시 비밀번호 없이 연결하기

개요

SSH(Secure SHell) 인터페이스/프로토콜을 이용하여 리눅스 원격 서버에 접속할 때 입력해야하는 계정정보 및 비밀번호 대신 원격서버에 저장된 공개키에 대응하는 개인키를 제출하여 비밀번호 입력과정 없이 로그인할 수 있도록 한다.

원격 서버에서는 ssh-keygen 프로그램을 이용하여 공개키와 개인키를 생성한 뒤, 공개키는 원격 서버에, 개인키는 클라이언트에 저장시켜 공개키에 대한 답으로 개인키의 내용을 제출할 수 있도록 한다.

클라이언트는 SSH 접속을 시도하면서 원격 서버의 공개키에 대한 응답으로 개인키를 제출하며 비밀번호 입력 과정을 통과함과 동시에 인증된 사용자로서 원격 서버에 접속할 수 있게 된다.

※ 이 글은 root 계정에 대해 비밀번호 없이 접속할 수 있도록 진행합니다. 실제로는 sudoers에 추가된 계정(root 권한으로 수행할 수 있는 명령을 root가 아닌 계정에서도 sudo 명령을 통해 수행할 수 있도록 설정되어있는 계정)에 대한 SSH 접속을 비밀번호 없이 할 수 있도록 하는 것이 일반적이지만, 개념 정리를 위해 간단하게 root 계정으로 진행합니다.

 

핵심 단계

1. 서버에서 ssh-keygen 프로그램 실행
2. 생성된 개인키 클라이언트로 전송
3. 개인키를 이용하여 서버 접속

 

세부 단계별 상세설명

1. 서버에 root 계정으로 접속합니다.

 

2. 서버에서 ssh-keygen 프로그램을 이용하여 rsa 방식의 공개키 / 개인키를 생성합니다. 대화창에선 엔터만 3회 입력합니다.

ssh-keygen -t rsa

 

3. 2번을 통해 생성된 id_rsa(개인키), id_rsa.pub(공개키) 2개의 파일에 다음과 같이 권한을 설정합니다.

chmod 600 id_rsa
chmod 644 id_rsa.pub

 

4. 서버에서 생성된 공개키인 id_rsa.pub 파일의 내용을 서버의 authorized_keys 파일의 내용과 같게 합니다.

cat id_rsa.pub > authorized_keys

 

5. 클라이언트 PC로 개인키를 전송합니다.

 

 

전송받은 개인키를 이용하여 원격서버로의 SSH 접속 시도

리눅스 계열에서 원격 서버로의 접속 수행 시

–  현재 ssh 접속을 수행하려는 user의 home디렉토리의 .ssh 디렉토리에 id_rsa 파일을 저장한 뒤 ssh 접속 시도

cd ~ #현재 접속한 유저의 home으로 이동합니다.
mkdir .ssh && cd .ssh #만약 이미 .ssh 디렉토리가 있는 경우 디렉토리는 생성하지 말고 .ssh 디렉토리로 이동합니다.
rsync -av -e "ssh -p 포트번호" root@your.server.ip:/root/.ssh/id_rsa . #서버에 있는 /root/.ssh 디렉토리 안의 id_rsa파일을 현재 위치로 가져옵니다.
ssh root@your.server.ip #ssh 연결을 시도해봅니다.

– 만약, id_rsa 파일의 권한이 600이 아니라면 /home/user/id_rsa are too open. blah blah… This private key will be ignored. 라는 메시지와 함께 키가 무시되고 비밀번호를 입력하라고 나올 것입니다. 이는 정상적인 것으로, 당황하지 않고 클라이언트 PC에서의 id_rsa 파일도 chmod 600 id_rsa 명령을 통해 권한을 해당 파일 소유자에게만 쥐어준 뒤 위 접속을 다시 시도해봅니다. 정상적으로 접속됨을 확인할 수 있습니다. 단, rsync 등의 서버 파일을 그대로 가져왔음에도 불구하고 저런 메시지가 뜬다면 서버에 존재하는 id_rsa 파일에 권한이 제대로 설정되지 않았다는 것이므로 주의해야 하며, 서버 권한도 정상적으로 지정해줍니다.

 

 

윈도우를 사용하면서 putty를 이용하는 경우 아래 W1 ~ W2 단계 진행

W1. puttygen 프로그램을 이용하여 4번을 통해 전송받은 개인키를 변환합니다.
– puttygen 프로그램 다운로드 및 실행
다운로드 링크 : https://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe
– Load 버튼 클릭 후 전달받은 원격 서버의 개인키(id_rsa)를 모든 파일을 보이도록 설정한 뒤 해당 파일 선택 후 확인 클릭
ssh
– key type은 SSH-2-RSA 선택
– Number of bits는 2048 입력
– Save private key 버튼을 클릭하여 Y 클릭(passphrase 없이 키 저장) 후 저장될 파일 위치를 지정한 뒤, 파일명 입력 후 저장(파일명은 원하는대로 설정)

W2. putty를 이용하여 SSH 접속을 수행합니다.
– putty 실행 후 좌측 카테고리에 Connection > SSH > Auth 선택
– 우측 창의 Private key file for authentication 아래 Browse 버튼 클릭
– W1번에서 변환 저장된 원격서버의 private key 파일(확장자가 ppk인 파일) 선택
– 해당 Session을 저장 후 접속
– root 계정명 입력 > 엔터 입력 시 Authenticating with public key “imported-openssh-key” 와 같은 메시지가 출력되면서 비밀번호 입력 과정이 생략됨

 

이상 원격 서버의 개인키를 이용하여 비밀번호 입력 없는 SSH 접속 방법을 알아보았습니다.

You may also like...

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.