상현에 하루하루
개발자의 하루

Synology SSH Key 접속

( 업데이트: )

SSH Key 만들기 & 설정

ssh-keygen

ssh-keygen 커멘드를 이용해서 키를 생성한다.

ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):[엔터키]
Enter passphrase (empty for no passphrase): [엔터키]
Enter same passphrase again: [엔터키]
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.Code language: Bash (bash)

~/.ssh 폴더에 id_rsa, id_rsa.pub키가 생성된다.

public key synology에 전송 (with: ssh-copy-id)

ssh-copy-id 커맨드가 가능하다면 간단하게 public key 파일을 전송할 수 있다.

ssh-copy-id는 로컬호스트의 공용 키를 원격 호스트의 authorized_keys 파일에 복사합니다. 그리고 알맞은 권한을 remote-host 유저의 아래 목록 파일, 폴더에 부여합니다.

  • ~/
  • ~/.ssh
  • ~/.ssh/authorized_keys
ssh-copy-id -i ~/.ssh/id_rsa.pub remote-hostCode language: Bash (bash)

위 명령어를 실행하면 ssh 로그인을 시도

home 파일 권한 확인

권한이 ssh-copy-id로 설정되겠지만 한번더 확인합시다.

chmod 755 ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keysCode language: Bash (bash)

Synology sshd config

sudo vim /etc/ssh/sshd_configCode language: Bash (bash)

아래와 같은 내용으로 설정을 변경해준다.

RSAAuthentication yes
PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keysCode language: plaintext (plaintext)

DSM7.0으로 넘어오면서 RSAAuthentication yes이 설정이 없어서 업그레이드하면서 제거된 줄 알았다. 없으면 추가해주자.

sudo synoservicectl --restart sshd  # DSM6.0
sudo synosystemctl restart sshd  # DSM7.0Code language: Bash (bash)

이렇게 설정했다면 정상적으로 Synology server ssh를 key를 통해서 접속할 수 있다.

✅ 비밀번호 접속 제한 (option)

나는 ssh key 설정을 빠른 로그인을 위해서 설정한 것이 아니라 보안을 위해서 설정했다. 그래서 위 설정으로도 따로 비밀번호로 접속할 수 있기 때문에 비밀번호로 접속하는 것을 제한하고싶다.

어떻게 제한하나?

sudo vim /etc/ssh/sshd_configCode language: Bash (bash)
PasswordAuthentication noCode language: plaintext (plaintext)
sudo synoservicectl --restart sshd  # DSM6.0
sudo synosystemctl restart sshd  # DSM7.0Code language: Bash (bash)

변경해주면 된다.