Computer >> 컴퓨터 >  >> 스마트폰 >> Linux

비밀번호 입력 없이 원격 서버에 SSH 접속하는 방법

매번 비밀번호를 입력하지 않고도 원격 서버에 SSH로 접속하는 방법을 소개합니다.

리눅스 서버에 원격으로 SSH 접속할 일이 잦다면, 여러 개의 비밀번호를 기억하고 로그인할 때마다 입력하는 일이 상당히 번거롭게 느껴질 것입니다. 다행히 비밀번호 입력 없이 서버에 접속할 수 있는 깔끔한 방법이 있습니다. 게다가 OpenSSH는 원격에서 명령어를 실행하는 기능도 제공하기 때문에, 비밀번호 없이 접속할 수 있다면 자동화 작업을 원격으로 손쉽게 실행할 수 있어 더욱 유용합니다.

보안을 걱정하는 분들도 계시겠지만, 이 방식은 상당히 안전합니다. 오히려 비밀번호를 직접 입력하는 방식보다 더 안전하다고 평가할 수 있습니다. 그럼 지금부터 원격 서버에 비밀번호 없이 연결하는 절차를 살펴보겠습니다. 참고로 이 과정은 리눅스 또는 유닉스 환경에서만 동작하며, 절차 자체는 매우 간단합니다.

1단계: RSA 공개 키 생성

가장 먼저 서버에 안전하게 인증하기 위한 공개 키를 생성해야 합니다. 리눅스 데스크톱에서 셸 터미널을 열고 다음 명령어를 실행하세요:

# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/calvin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/calvin/.ssh/id_rsa.
Your public key has been saved in /home/calvin/.ssh/id_rsa.pub.

이 단계에서 공개 키가 생성되어 /home/calvin/.ssh/id_rsa.pub 파일에 저장됩니다. 키를 저장할 파일 경로를 묻는 질문이 나오면 그냥 Enter 키를 눌러 기본값을 선택하면 되고, 암호구(passphrase)를 입력하라는 프롬프트에서도 Enter 키를 두 번 누르면 됩니다. 이 파일은 홈 디렉터리의 .ssh 폴더에 저장되며, 이 폴더에는 SSH 관련 설정 파일들이 모두 들어 있습니다.

2단계: 공개 키를 원격 서버로 복사

다음으로, 생성한 공개 키 파일을 비밀번호 없이 접속하고 싶은 서버로 복사해야 합니다:

# scp ~/.ssh/id_rsa.pub username@remoteserver.com:/home/username/

위 명령어에서 username은 원격 서버 로그인에 사용하는 사용자 이름으로, remoteserver.com은 원격 서버의 호스트 이름 또는 IP 주소로 각각 바꿔서 입력하세요.

3단계: authorized_keys에 키 등록 및 권한 설정

이제 해당 서버에 SSH로 접속한 뒤, 데스크톱의 공개 키를 서버의 SSH 설정에 추가합니다:

# ssh username@remoteserver.com
# cat ~/id_rsa.pub >> ~/.ssh/authorized_keys2

그다음 ~/.ssh/authorized_keys2 파일의 권한을 올바르게 설정해야 합니다:

# chmod 644 ~/.ssh/authorized_keys2

권한 설정이 항상 필수인 것은 아니지만, 권한 문제로 키 인증이 정상적으로 동작하지 않아 골치 아픈 경우가 많습니다. 미리 올바르게 설정해두면 시행착오를 줄일 수 있습니다.

여기까지 완료되었습니다. 원격 서버와의 SSH 연결을 종료한 뒤 다시 접속해 보세요. 이제 비밀번호를 묻는 프롬프트가 나타나지 않을 것입니다.

비밀번호 없이 원격 명령 실행하기

설정이 끝나면 원격 서버에서 다양한 작업을 할 수 있습니다. 예를 들어 다음과 같은 명령어를 실행해 보세요:

# ssh username@remoteserver.com "uptime; df -h"

이 명령어는 비밀번호를 요구하지 않고 원격 서버의 출력 결과를 로컬 셸에 바로 보여줍니다. 또한 비밀번호 입력 걱정 없이 원격 서버와 파일을 자유롭게 주고받을 수도 있습니다. 덕분에 간단한 셸 스크립트만으로 매일 원격 서버의 일일 백업 파일을 로컬 데스크톱으로 내려받는 식의 자동화도 가능합니다. 상당히 강력한 도구이니, 활용할 때는 보안에 유의하기 바랍니다.