시놀로지 사망 그 이후... 어라? SSH가 안돼요..😭

0

소제목: 시놀로지 초기화 이후, RSA 공개키 방식으로 SSH 접속이 안될 때

돌아온 사건 설명 🍿 #1

음... 일단 이건 배경지식이 좀 필요합니다.

기본적으로 시놀로지는 DSM이 있긴 하지만,, 한계가 있다보니 시놀로지에 외부 접속을 하게 되는 경우가 많습니다.

이 때 SSH를 주로 사용하게 됩니다. 뭐 여기에는 Putty같은 툴을 사용해서 접속할 수도 있고, 일반적인 프롬포트 창에서 접속할 수 도 있어요.

문제는 뭐냐면 SSH는 기본적으로 호스트의 계정 아이디와 비밀번호를 가지고 접속하게 되는데,
이는 보안에 취약할 수 있습니다. 그래서 특정 PC 예를 들면 내가 주로 외부 접속으로 작업을 하는 PC에서만 외부 접속을 허용하게 하고 싶어서, IP 또는 다른 인증 방식으로 제약을 둘 수 있어요.

그 중에서 저는 RSA 공개키 인증을 통해 접속을 할 수 있도록 설정을 해두었습니다. 그래서 제가 주로 외부 접속을 하는 PC의 RSA 공개키를 시놀로지에 등록해두고 사용을 합니다.

문제는 이 부분인데요. 이번에 NAS를 초기화하면서 데이터를 모두 날린 것 같지만,
시놀로지 DSM의 구성 백업을 통해, DSM 제어판에서 설정해둔 어떤 셋팅 값들은 살릴 수 있었어요.
그래서 셋팅은 백업했습니다.

예를 들어 SSH 접속은 RSA 공개키를 등록해둔 PC에서만 접속할 수 있어!! 와 같은 것들은 말이죠..

그런데 RSA 공개키를 저장해둔 파일이 없어졌습니다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

공개키 사용할래? 응,
그럼 등록된 공개키를 확인해볼게~ 어라? 공개키가 하나도 등록이 안되어있잖아.
너 그럼 아무 PC에서도 접속 못해!!

가 되버렸습니다.

후우... 그래서 여러가지 방법을 수소문 해봤습니다만 이런 경우가 잘 없더라고요.
나중에 알게 된 사실이지만 SSH 말고 텔넷이라는 걸 사용해서 접속을 할 수는 있다고 합니다.
물론 저는 다른 방식으로 해결했습니다.

해결 과정

먼저, 여러가지 방식을 수소문하다가 시놀로지의 스케쥴러에서는 스크립트를 실행할 수 있다는 글을 발견하게 됩니다.

예를 들어, SSH에 접속한 이후 복사를 하게 되면 cp~~로 시작하는 명령어를 사용하게 되죠.

근데 스케줄러에서는 굳이 SSH에 접속하지 않더라도 명령어를 사용할 수 있습니다.

여기서 작업 스케줄러에 들어가면 됩니다.


이후에 생성 -> 사용자 정의 스크립트 순으로 누르게 되면 되는데요.

이렇게 사용자를 root로 설정해주시면 됩니다. 왜냐하면 저희는 root 권한이 필요해요.
ssh 서비스를 한번 껐다가 켜야하는데다가, 설정 파일을 건드려야하는데 이런 파일들의 권한은
root 계정에서만 건드릴 수 있도록 되어있습니다.

1. 현재의 sshd_config 파일을 저장해두자

그래서 먼저 실행할 스크립트는 다음과 같습니다.

cat /etc/ssh/sshd_config

아 참, 이렇게 하는 이유는 sshd_config에 RSA 공개키방식으로 확인할거야 라고 적혀있기 때문에 우리는 이 Config 파일을 초기화 할 것입니다. 근데 추후에 이 파일이 필요할 수 있기 때문에 백업을 해둔다고 생각하면 됩니다.

근데 또 굳이 이렇게 백업할 이유는 없습니다. 저는 진짜 설정 파일이 그렇게 되어있나 확인할 겸 저렇게 했습니다. 이렇게 하면 해당 스크립트의 실행 결과로 나온 로그 파일을 보면서 따로 저장해야하는 문제가 생깁니다.

다른 방식으로는

mv /etc/ssh/sshd_config /etc/ssh/sshd_configggggg

로 해서 설정 파일 이름을 아예 다른걸로 바꾸어 버리면 됩니다. 만약 저와 같은 방식으로 했다면 아래의 내용을 따라와 주세요. 그냥 단순히 mv~로 실행했다면 2단계는 건너뛰어도 됩니다.

그래서 사전에 스크립트의 실행 결과를 로그로 기록하도록 설정을 해둡시다.

작업 스케줄러의 오른쪽 위에 설정에서 출력 결과를 저장할 위치를 설정합니다.

그리고 아까 스크립트를 실행해주면 됩니다.

등록한 스케줄을 마우스 우클릭 버튼으로 누른 뒤 실행을 할 수 있습니다.

2. 로그 확인

스크립트의 실행이 완료되면 로그가 기록됩니다.

한번 확인해볼까요?

아까 등록해두었던 로그 기록 폴더에 이렇게 두 개의 파일이 생긴걸 볼 수 있습니다.
이 중에서 output.log가 스크립트의 실행 결과입니다.

저희는 cat 명령어를 실행했기 때문에, sshd_config 파일의 내용이 전부 나오게 될 겁니다.


네~ 이런 식으로 sshd_config 파일의 내용이 나오네요. 이제 이 내용을 잘 가지고 있으면 됩니다.

백업이 완료되었으니 설정파일을 날리도록 합시다.

3. 설정 파일 너 나가~😊

1 단계에서 설정 파일의 이름을 변경하는 명령어를 실행하면 됩니다.

mv /etc/ssh/sshd_config /etc/ssh/sshd_configggggg

이렇게 바꾸게 되면 ssh는 자신의 config 파일이 없어졌기 때문에 해당 설정대로 작동하지 않습니다.
저희는 추후에 다시 config를 백업해둔 파일을 이용해서 설정할 것이기 때문에 괜찮아요 안심하세용

설정 파일을 제거했으면, ssh를 재시작해야합니다.

DSM 7기준으로 ssh 서비스를 재시작하는 명령어는 다음과 같습니다. 다시 해당 명령어를 스케쥴러에 등록해주고 실행하도록 합시다.

마찬가지로 root 계정으로 실행해야합니다!!!

/usr/syno/bin/synosystemctl restart sshd.service

4. ssh 접속 성공!!

이제 config 파일을 되돌려 놓는 차례입니다. 그 대신 수정이 필요합니다.

ssh로 접속한 뒤에 설정파일을 조금 손봐줍시다. 아까 이름을 바꿔놓았던 설정파일을 에디터로 열어줍시다.

vi /etc/ssh/sshd_configggggg

우리가 수정해야할 부분은 이 부분입니다.


RSAAuthentication 은 no로,

PubkeyAuthentication도 no로,

PasswordAuthentication은 yes로 바꿔주시면 됩니다!!
왜냐! 우리는 이제 패스워드로 접속할거니까!!!

mv /etc/ssh/sshd_configggggg /etc/ssh/sshd_config

설정 파일의 이름을 되돌려주고 나서~
다시 SSH 재시작 스크립트를 실행해주면 됩니다.

끝~~~

인간의 승리

음.. DSM에서 스크립트를 실행하지 못했다면,,
정말 상상만해도 끔찍합니다.

다행인건 SSH가 안되더라도 어떻게 할 방법을 하나 배웠다는 사실입니다.

저랑 같은 고민을 하시는 분들이 있을까봐 이렇게 글을 남겨봅니다.

근데 일단 저처럼 멍청한 사람들이 별로 없을 것 같은게
대부분의 사람들은 나스를 따로 백업하더라고요? 하하핫

뭐 급하게 외부에서 접속하고 싶은데 RSA가 등록이 안되있으면 써볼법 합니다.

profile
최악의 환경에서 최선을 다하기

0개의 댓글