SSH Passwordless Login – CentOS 7 / RHEL 7 | 비밀번호 없이 SSH 로그인하기

SSH는 암호화된 터널을 이용하여 원격으로 시스템에 접속할 수 있게 해주는 클라이언트-서버 프로토콜이다. 클라이언트가 서버에 접속할 때마다 클라이언트는 서버에서 안전한 암호 키를 다운받고, 동시에 서버는 클라이언트로부터 키를 다운받는다. 두 키는 서버와 클라이언트 사이에 암호화된 터널을 만들게 되어 네트워크를 통한 데이터 전송이 매우 안전해진다.

SSH는 TCP 네트워크가 사용하여 데이터를 가져오기 위해 암호를 입력하게 하는 FTP의 대안으로 널리 사용된다. SSH 또한 TCP 서비스이고 원격으로 시스템에 접속하기 위하여 암호를 입력해야 한다. 만약 사용하는 서버가 많다면, 관리자는 매번 접속을 위해 매번 비밀번호를 입력해야 한다. 비밀번호를 여러 번 입력하는 것은 매우 귀찮기 때문에, 비밀번호를 입력하지 않고 원격으로 접속할 수 있도록 SSH에 비밀번호 없는 로그인 기능이 도입되었다.

비밀번호 없는 로그인을 활성화하기 위해서는 클라이언트 호스트 이름이 포함된 퍼블릭 키와 유저 정보를 원격으로 접속하려는 서버에 등록해야 한다. 이 키는 원격 시스템 유저의 ~/.ssh/authorized_keys 파일에 저장된다.

비밀번호 없는 로그인을 위한 과정은 아래와 같다. 유저 이름이 다른 두 시스템을 사용할 것이다.

가정:

시스템 1:
호스트 이름: server.itzgeek.com
IP 주소: 192.168.12.6
유저 이름: raj

시스템 2:
호스트 이름: client.itzgeek.com
IP 주소: 192.168.12.8
유저 이름: ram

아래에서는 IP 주소 대신에 호스트 이름을 사용할 것이다. 실제 IP 주소를 사용해도 된다. server.itzgeek.com에 raj로 로그인하여, 아래 커맨드로 키 쌍을 만들었다.

[raj@server ~]$ ssh-keygen

Generating public/private rsa key pair.
Enter file in which to save the key (/home/raj/.ssh/id_rsa):
Created directory ‘/home/raj/.ssh’.
Enter passphrase (empty for no passphrase): Press Enter
Enter same passphrase again: Press Enter
Your identification has been saved in /home/raj/.ssh/id_rsa.
Your public key has been saved in /home/raj/.ssh/id_rsa.pub.

키를 만들고 나면 .ssh 디렉토리 안에서 두 개의 파일을 확인할 수 있다. id_rsa와 id_rsa.pub이다. id_rsa.pub 파일을 사용할 것이다.

[raj@server ~]$ ll ~/.ssh/
total 8
-rw——-. 1 raj raj 1675 Nov 25 10:43 id_rsa
-rw-r–r–. 1 raj raj 404 Nov 25 10:43 id_rsa.pub

id_rsa.pub 파일을 인자로 하여 ssh-pocy-id 커맨드를 사용하면 ~/.ssh/authorized_keys 파일이 생성되거나, 파일에 내용이 추가될 것이다. 키는 스트와 유저 이름에 대한 정보를 담고 있다.

[raj@server ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub ram@client.itzgeek.com

The authenticity of host ‘client.itzgeek.com (192.168.12.6)’ can’t be established.
ECDSA key fingerprint is a1:cb:88:60:46:16:fd:d3:93:31:4b:5f:94:5e:78:f8.
Are you sure you want to continue connecting (yes/no)? yes Type Yes and Enter
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed — if you are prompted now it is to install the new keys
ram@client.itzgeek.com’s password: Enter password of ram (client machine user)
Number of key(s) added: 1Now try logging into the machine, with: “ssh ‘ram@client.itzgeek.com'”and check to make sure that only the key(s) you wanted were added.

이제 원격 시스템에 SSH를 이용해 접속한다. 비밀번호를 묻지 않고 쉘로 접속시켜 줄 것이다.

[raj@server ~]$ ssh ram@client.itzgeek.com
[ram@client ~]$

이게 전부다. 비밀번호 없는 로그인은 시스템 관리자의 시간와 에너지를 절약해준다.

 

#.

접속할 때 비밀번호를 안써도 되는 것은 물론, 스크립트로 ssh를 할 수 있기 때문에 하둡 같은 클러스터를 관리할 때 매우 도움이 됩니다.

 

원문.

SSH Passwordless Login – CentOS 7 / RHEL 7

316 Comments