[linux] 패스워드 없이 ssh 접속하기

alirz-pixel·2022년 7월 30일
0

linux

목록 보기
2/4

ssh-keygen

source (local)

ssh-keygen -t rsa 
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

위의 명령어를 차례로 입력했을 때, 아래와 같이 출력된다면 잘 따라오고 있다는 뜻이다.

drwx------ 2 <user> <group> 4096 Jul 30 15:42 .
drwxr-xr-x 4 <user> <group> 4096 Jul 30 19:18 ..
-rw------- 1 <user> <group> 2602 Jul 30 15:42 id_rsa  <- private_key
-rw-r--r-- 1 <user> <group>  571 Jul 30 15:42 id_rsa.pub <- public key
-rw-r--r-- 1 <user> <group>  444 Jul 29 19:50 known_hosts 	

destination (server)

local 서버에서 만든 public 키 (id_rsa.pub)를 ssh 대상 서버의
~/.ssh/authorized_keys에 붙여넣기한다.

scp -P <port> <source file path> <id>@<address>:<dst path>
scp -P <port> ~/.ssh/id_rsa.pub <id>@<address>:~/.ssh/authorized_keys

reuslt

만약에 위의 과정을 잘 따라왔다면, 이제는 ssh 접속 시 비밀번호를 적지 않아줘도 된다.



세부 설명

ssh-keygen -t rsa : 암호화 방식으로 rsa를 사용하겠다는 뜻이다.
.ssh/authorized_keys - 다른 컴퓨터에서 만든 public key도 담기기 때문에 오버라이팅을 해서는 안된다.

파일 경로

아무것도 적지 않은 채 엔터를 누르면 기본 경로에 저장된다
(기본경로 : 로그인 한 사용자의 홈디렉토리)

Enter file in which to save the key (/home/<user>/.ssh/id_rsa): 

private_key 경로를 임의로 변경하였다면,
아래의 명령어를 통해 다른 경로에 있는 키를 사용할 수 있다.

ssh -i <private_key_loc> <user>@<host>

(ssh client는 기본경로에 있는 private 키를 이용하여 인증하기 때문)

passphrase

passphrase는 일종의 비밀번호로 비공개키를 입력한 값으로 암호화한다.
권장 값은 10~30 문자이며 생략이 가능하다.

Enter passphrase (empty for no passphrase): <Type the passphrase>

우리가 원하는 것은 자동 로그인이기 때문에 아무 입력 없이 엔터를 눌러주면 된다.


권장 권한

위에 나온 명령어처럼 chmod를 통해 퍼미션을 바꿔주는 것을 볼 수 있는데,
linux에서는 다음과 같은 퍼미션을 권장한다.

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub  
chmod 644 ~/.ssh/authorized_keys
chmod 644 ~/.ssh/known_hosts

ssh 디버그

ssh 명령어에 -v 옵션을 주어 접속과정에서 일어난 것들을 확인할 수 있다.
(v는 최대 3개까지 적을 수 있으며, 많이 적을수록 상세한 과정이 나옴)

ssh <user>@<host> -v

만약에 ssh key가 제대로 설정되지 않았다면 위의 코드로 어디서 문제가 발생했는지 확인하면 된다.

0개의 댓글