Server/Linux

[Linux] 리눅스 서버에 패스워드없이 접속하기 / rsa 암호키 방식 / ssh-keygen

Hannana. 2024. 2. 3. 19:08
반응형

들어가기 전, 

필자는 이 게시글을 작성하기 위해 며칠을 삽질을 했다..

혹시 리눅스 서버를 구성할 때 VMWare를 사용해서 구성한 사람이라면

글의 마지막 쯤을 먼저 읽기를 추천한다.

 

 


 

 

지난 번 윈도우의 커맨드 환경에서 리눅스 서버에 접속하는 방법으로 SSH 프로토콜을 소개했는데,

접속할 때마다 패스워드를 입력해야 하는 번거로움이 있었다.

또 보안에 취약하고 주기적 변경해야 하는 단점이 있다.

 

ssh-keygen은 SSH 접속을 위한 인증 키를 생성, 관리 및 변환한다.

공개 및 개인 키 쌍을 생성하는 형태로, 쉽게 말해 생성하고 서버에 넘겨주면

서버와 클라이언트가 공유하는 한 쌍의 보안키로 

이후 원격 시스템에 안전하고 편리하게 로그인하고 인증할 수 있다는 것이다.

 

우선, 방법은 간단하다.

커맨드 창에서 'ssh-keygen'을 입력한다.

 

  • Enter passphrase (empty for no passphrase): Private 키를 입력된 passphrase로 암호화해서 저장할지 여부
  • Enter same passphrase again: passphrase 확인하는 단계

 

 

 

암호화 키 쌍에 대한 설명
개인키와 공개키가 이렇게 생성이 된다.

 

 

 

 

 

 

 

 

.pub 키를 원격지 서버로 보내주자.

 

방법1) 파워쉘 명령어 (★추천! 제일 간단함)

PowerShell -Command type $env:USERPROFILE\.ssh\id_rsa.pub | ssh 사용자명@서버IP "cat >> .ssh/authorized_keys"

 

 

방법2) scp 명령어 사용해서 파일 보내기

scp -P 22 id_rsa.pub 계정명@서버IP:/tmp/

 

pub키를 서버의 임시 폴더로 보내주고

(참고 : ~/ 는 사용자 폴더까지의 경로를 축약한 것)

cat ~/tmp/id_rsa.pub >> ~/.ssh/authorized_keys

 

내용을 그대로 ~/.ssh/authorized_keys 파일에게 보내준다.

 

 

방법3) 수동으로 복붙

 

 

 

 

근데 접속을 해보니

 

패스워드를 입력하라고 계속 뜨길래,

권한 설정이 문제인가 싶어 다음과 같이 권한도 변경해주었는데 해결이 안되었다.

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

 

그래서 구글링 끝에 찾은 해결 방법.

바로 /etc/ssh/sshd_config의 PubkeyAuthentication, AuthorizedKeysFile 를 설정하는 것.

[shan@localhost ssh]$ sudo vi ssh_config

 

관리자 권한으로 다음 구절을 추가해주었다.

PubkeyAuthentication yes
AuthorizedKeysFile ~/.ssh/authorized_keys

 

본인은 VMware로 서버를 구성한지라, 기본으로 키파일 설정이 안되어 있어

키 파일을 엉뚱한 곳에서 찾고 있었던 것이다.

다시 접속해보니

패스워드 없이 서버에 접속 된 모습

접속이 완료되었다. 

한 가지 작업을 더 해보자.

사용자의 ~/.ssh 폴더 내에 확장자가 없는 config 파일을 만든다.

그리고 다음과 같이 서버 접속 정보를 저장한다.

Host myserver
    HostName IP주소
    Port 22
    User ubuntu

 

본인은 윈도우 메모장으로 쓰고 이름을 바꿔주었음

이렇게 하면

매번 번거롭게 사용자명@IP주소 를 입력할 필요없이 간단하게 서버 접속이 가능해진다.

 

 

며칠에 걸쳐서 삽질 끝에 성공한 ssh-keygen 인증 방법!

이제 편하게 서버에 접속할 수 있게 되었다.ㅠㅠ

 

 

 

 

반응형