운영체제 OS/리눅스 Linux

Q. 우분투 서버에 비밀번호 없이 id_rsa 키로 ssh 접속하는 방법은?

Tap to restart 2022. 6. 22. 22:00
반응형

A. id_rsa.pub 파일을 열어서 내용을 서버의 authorized_keys에 등록하면 된다. 

 

먼저 id_rsa 키부터 만들자

 

macOS 맥 사용자거나 리눅스를 쓴다면 터미널을 실행한다. 

$ ssh-keygen

 

명령어를 실행한다.

실행하면 아래 이미지처럼 진행된다. 

passphrase 암호구문을 등록해도 되고 안 해도 된다. 보안을 한단계 더 강화하고 싶다면 암호구문을 등록하자.

 

ssh-keygen 실행 결과

 

$ cd .ssh
$ ls

.ssh 디렉터리가 생겨 있다. 거기 들어가서 ls를 치면 id_rsa, id_rsa.pub 두 파일이 생긴다. 

 

id_rsa.pub이 공개키이고 그냥 id_rsa 비밀키이다. 

이름 그대로 공개키 암호시스템 중 하나인 RSA 암호화 기법을 쓰고 있는 것이다. RSA 암호화 기법이 궁금하다면 위키를 들어가서 보자. 

 

여기까지 했다면 우분투 서버에 접속하자. 

접속해서 작업할 계정을 추가로 만든다.

아예 비밀번호 안 쓰는 계정을 만들 수 있다. 

$ sudo adduser --disabled-password username

예를 들어 dev란 계정을 만든다면 아래 명령어를 실행하면 된다.

sudo adduser --disabled-password dev

 

해당 계정에 대해서 비밀번호 없이 sudo 명령어를 할 수 있게 해줘야 한다. 

비밀번호를 안 쓰는 계정이므로. 

아래 명령어를 실행한다.

$ sudo visudo

편집기 화면에서 username ALL=NOPASSWD:ALL를 추가해준다. 

만약 dev라면 dev ALL=NOPASSWD:ALL

 

ALL=NOPASSWD:ALL 추가

저장하고 나온다. 

 

이제 dev 안으로 들어갈 차례다. 

그냥 들어가진다면 바로 다음 단계로 넘어가고 혹시 우분투 버전에 따라 안 된다면 그룹 관련된 작업을 해줘야 한다. 

ls -all 을 실행했을 때 아래처럼 나온다면 dev란 사용자와 dev란 그룹만 접속 가능한 상태라 cd dev를 해도 들어갈 수 없다.

drwxr-x---  4 dev  dev 4096 Apr 25 12:16 dev

 

우선 admin이란 그룹을 만들자. 

$ sudo groupadd admin

그 다음 사용자를 그룹에 추가하자

 

$ sudo gpasswd -a username group

사용자가 taptorestart 이고 group이 admin일 경우에는

$ sudo gpasswd -a taptorestart admin

이라고 실행하면 된다. 

 

여기까지 했다면 앞의 dev 디렉터리 그룹 권한을 변경해야 한다. 

$ sudo chown dev:admin dev

를 실행하면 이제 변경된 것을 확인할 수 있다. 

지금 접속한 사용자 계정을 admin 그룹에 추가했으므로 cd dev를 하면 이제 들어갈 수 있다. 

 

admin 그룹에 추가했는데도 안 된다면 터미널을 종료하고 다시 접속하자. 

 

dev 디렉터리 가기! authorized_keys 등록

$ cd /home/dev

위 명령어로 dev로 간다.

$ sudo mkdir .ssh
$ sudo vi authorized_keys

vi를 이용해서 authorized_keys 파일을 수정한다. 없으면 자동으로 파일이 생성된다. 

 

앞에서 맥 컴퓨터에서 만든 id_rsa.pub 파일을 열어본다. 

아래처럼 보이는 것을 확인할 수 있다. 이 텍스트 전체를 선택 복사한다.

 

 

그리고 터미널 vi authorized_keys 편집창에서 i 를 눌러서 편집상태로 만들고 붙여넣기를 하고 esc 키를 누르고 :wq 를 눌러서 저장하고 나온다.

 

다시 vi authorized_keys를 실행했을 때 붙여넣기 한 텍스트가 보인다면 제대로 한 것이다. 

 

이제 접속하기 

터미널을 exit로 연결을 종료한다. 

$ ssh -p port dev@hostname

위처럼 이제 dev 계정으로 로그인하자. 

예를 들어 접속 포트가 22, ip 주소가 같은 네트워크라 192.168.0.10 이라면

ssh -p 22 dev@192.168.0.10 이라고 접속하면 비밀번호 없이 접속할 수 있다!

비밀번호 없이 sudo 명령 실행

$ sudo apt-get update

 

처럼 sudo로 실행해도 비밀번호 없이 잘 작동하는 것을 볼 수 있다!

 

만약 다른 컴에서도 접속하고 싶다면?

ssh-keygen으로 id_rsa.pub 키를 만들어서 또 등록하거나 아니면 id_rsa 파일을 복사해서 홈 디렉터리 안에 .ssh 디렉터리 안에 붙여 넣기 하면 된다. 비밀키가 있으므로 접속할 수 있다.

 

반응형