ssh를 사용하면서 가장 귀찮은 것 중 하나가 비밀번호 입력이다.

 

물론 대부분의 사람들이 해킹당하면 변명의 여지조차 없는 비밀번호를 즐겨 사용하는 것은 맞지만

 

그래도 형식상으로는 입력해줘야 하니까.

 

 

다행(?)스럽게도, 바로 전 글의 ssh 서버에 닉네임 붙여 사용하는 법과 함께 적용하면

 

비밀번호 입력 없이 한 번에 ssh 접속을 할 수 있게 하는 설정 방법이 있다.

 

쉽게 말해서 연구실에 출입 카드를 찍고 드나드는 느낌인데

 

해당 출입 카드를 내 로컬 PC에 저장해 놓는다는 컨셉이다.

 

 

아래와 같은 명령어로 출입 카드를 만들 수 있다.

$ ssh-keygen -t rsa -b 2048

이는 RSA 타입의 2048비트 키를 만들겠다는 의미이다.

 

우리가 원하는 것은 보안을 희생한 일방적인 편의성이기 때문에, 뒤에 몇 가지를 물어보면 엔터로 일관해주면 된다.

 

 

해당 명령어의 실행을 마치면 .ssh 폴더 아래에 id_rsa와 id_rsa.pub라는 파일 두 개가 생긴다.

 

여기서 id_rsa.pub라는 파일이 내 신원 정보를 가지고 있고, id_rsa가 내 출입 카드라고 생각하면 된다.

 

당연히 id_rsa는 나만 가지고 있어야 한다.

 

출입 카드를 사용하려면 내 신원 정보를 서버에 등록할 필요가 있다.

 

사실 id_rsa.pub 파일은 그냥 텍스트이기 때문에

 

해당 내용을 서버의 어딘가에 잘 붙여 넣으면 등록이 완료된다.

 

하지만 이는 굉장히 번거로운 작업이기에 아래 명령어로 한 번에 처리하도록 하자.

$ ssh-copy-id [닉네임]
# 혹은,
$ ssh-copy-id -p [Port 번호] [사용자 이름]@[IP 주소 혹은 도메인]

해당 명령어를 입력하면 .

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: - key(s) remain to be installed -- if you are prompted now it is to install the new keys

같은 내용이 나오며 비밀번호를 입력하라고 하는데,

 

이전에 서버 접속을 위해 사용하던 비밀번호를 입력하면 신원 등록이 완료된다.

 

이제

$ ssh [닉네임]

으로 비밀번호 입력마저 없이 한 번에 서버에 접속할 수 있다.

 

 

여담으로 접속한 서버에서

$ vi ~/.ssh/authorized_keys

로 파일을 열어보면, 내 id_rsa.pub의 내용이 잘 복사되어 있는 것을 확인 할 수 있다.

현재 연구실 작업 환경이 [로컬 + 연구실 서버]를 중심으로 되어 있어, ssh 접속을 굉장히 자주 사용하게 된다.

 

하지만 이를 위해 접속 IP나 도메인을 매 번 입력해 주는 것은 번거로우며, 기억하기도 쉽지 않다.

 

이에 대한 멋진 솔루션을 1년 정도 전에 재린이에게 배웠지만,

 

아직 연구실의 많은 사람이 수동으로 IP를 입력해서 원하는 서버에 접속하는 것 같다.

 

사실 굉장히 간단한 기능이고 필수적인 요소가 아니긴 하지만,

 

오히려 그렇기에 사람들에게 많이 알려져 있지 않은가 하는 생각도 든다.

 

 

Ubuntu의 경우, 아래와 같이 설정하면 임의의 IP나 도메인닉네임을 붙여 ssh 접속이 가능하다.

 

먼저 ssh config 파일을 아래와 같이 연다.

$ vi ~/.ssh/config

만약 폴더가 존재하지 않아 에러가 생긴다면 새로 만들어주면 된다.

$ mkdir ~/.ssh

이렇게 해서 연 config 파일에 아래와 같이 입력해주고 저장하면 완료.

Host [닉네임]
    HostName [IP 주소]
    Port [Port 번호]
    User [사용자 이름]
    IdentityFile [Key 파일 위치]

여기서 IdentityFile은 인증키를 포함하고 있는 파일인데 우리 연구실에서는 별도로 쓰지 않고 있다.

 

키가 필요하지 않은 경우 해당 라인을 지우면 되고,

 

Google Cloud 등을 사용하면 접속에 .pem 파일이 필요할 때가 있는데 이럴 때 사용하면 된다.

 

 

설정이 완료된 후에는 아래와 같이 한 방에 ssh 접속이 가능하다.

$ ssh [닉네임]

ssh protocol을 사용하는 다른 명령어(scp 등)에도 일괄적으로 적용된다.

 

또한, 명령어에 다른 argument를 넣어주면 기존 config 파일에 설정했던 내용이 override 되는 것으로 보인다.

# Local의 파일 abc.txt를 서버 해당 유저의 root directory에 복사
$ scp abc.txt [닉네임]:.

# Port 번호를 8023으로 바꿔서 접속
$ ssh -p 8023 [닉네임]

 

다만 아직까지는 비밀번호를 반복적으로 입력해야 한다는 귀찮은 점이 남아있는데,

 

이후에 설명할 ssh key를 활용하면 이것까지 한 번에 해결된다.

+ Recent posts