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
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
만약에 위의 과정을 잘 따라왔다면, 이제는 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는 일종의 비밀번호로 비공개키를 입력한 값으로 암호화한다.
권장 값은 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 명령어에 -v 옵션을 주어 접속과정에서 일어난 것들을 확인할 수 있다.
(v는 최대 3개까지 적을 수 있으며, 많이 적을수록 상세한 과정이 나옴)
ssh <user>@<host> -v
만약에 ssh key가 제대로 설정되지 않았다면 위의 코드로 어디서 문제가 발생했는지 확인하면 된다.