[Synology] VSCode SSH 원격 접속 안되는 경우 해결 (Remote-SSH)


이미지 출처 : https://buildgoodhabit.tistory.com/133

현재 NAS에 있는 폴더를 VSCode로 열어서 코딩을 해야할 일이 생겼습니다. NAS에서 Docker로 Node.js 서버를 하나 열려는데 마운트할 폴더가 NAS에 있기 때문이죠. 사실 메인PC 에서 작업하고 NAS로 파일만 옮겨서 실행하는 방법도 있는데 Node.js의 모듈(라이브러리)을 저장 해놓는 폴더 중에 node_modules 라는 폴더가 있는데 이게 구조가 아주 복잡하고 더러워서 짜잘한 파일과 폴더들로 넘칩니다.

 

일반적으로 NAS와 같은 데이터 서버는 HDD로 돌리는데 아시다 싶이 HDD는 이런 짜잘한 파일을 여러개씩 읽는 것에 매우 쥐약입니다. 몇kb~mb 의 파일을 수 많개씩 HDD로 읽는다? 하면 상상도 하기 싫네요. 그래서 VSCode에서 NAS 위치를 직접 열어서 코딩을 한 번 시도해봤습니다.

 

확인을 해보니깐 Remote - SSH 라는 익스텐션으로 간편하게 원격 접속을 통해 코딩을 할 수 있더라구요. 아마 이름 그대로 SSH 방식을 통해 원격 접속을 하는 것 같습니다.

 

사실 근데 본 글을 작성한 이유는 Remote - SSH 사용법을 다루는 게 아니라 시놀로지에서 접속이 안될때 해결방법을 다루는 글입니다.

 

Remote - SSH 로 시놀로지 SSH 서버에 접속하려니깐 접속이 안되더라구요.. 분명 시놀로지에서도 SSH 서버가 켜져있는데 무한로딩에 빠지고 제대로 작동을 하지 않았습니다.

 

해결 방법은 생각보다 어렵지 않습니다.

 

아래 경로에 파일을 열어서 AllowTcpForwarding 부분 값을 yes로 수정해주시면 됩니다.

/etc/ssh/sshd_config

우선 Putty 와 같은 프로그램으로 시놀로지 SSH 서버에 먼저 접속해주세요.

 

그리고 아래 명령어를 통해 수정해줍니다.

sudo -i # root 권한 획득
vi /etc/ssh/sshd_config #vi 에디터로 수정 (vi(vim) 에디터를 쓸 줄 모른다면..? ㅠ)

#이후 AllowTCPForwarding 부분을 찾아서 yes로 바꿔줍니다.
#vi 에서 /Allow 부분까지 입력하면 AllowTCPForwarding 부분을 빠르게 찾을 수 있습니다.
#앞의 #으로 되어있는 주석을 해제해주셔야 합니다.

#수정 이후 아래와 같은 모습이 되어야 합니다.

#AllowAgentForwarding yes
AllowTcpForwarding yes
#GatewayPorts no
#X11Forwarding no
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes

#수정이 완료되었으면 저장해줍니다. (:wq)

기본적으로 시놀로지엔 nano 에디터 같은게 없어서 vi 에디터 (vim) 사용법을 미리 알고계셔야 합니다.

본 글은 vi 에디터의 튜토리얼 글이 아니기 때문에 사용 방법은 생략하도록 하겠습니다..

 

뭐 글 보시는 분들은 시놀로지에 nano 에디터를 잘 설치하던 vi 에디터를 미리 쓸 줄 아시던 어떤 방법으로라도 해결 하실거라 믿습니다 ! ㅎㅎ;;

 

그리고 수정이 완료되었으면 SSH 서버를 껐다 켜줘야 하는데 단순이 명령어로 restart 를 시켜주면  서버가 다운되어버리는 문제가 있습니다. 그러므로 DSM 사이트로 이동해서 SSH 서비스를 비활성화 - 활성화 시켜주셔야 합니다.

 

위 처럼 DSM 설정 웹사이트로 들어가서 저 SSH 서비스를 비활성화 후 적용 , 다시 활성화 후 적용을 눌러서 SSH 서버를 재시작 해주시면 됩니다. 이렇게 하니깐 저렇게 수정 이후에도 SSH 서버가 죽지 않고 잘 restart 되더라구요!

 

이 설정이 끝난 이후 다시 Remote SSH로 접속을 해보면 잘 접속이 되는걸 확인해볼 수 있습니다. 참고로 접속시 운영체제 환경은 Linux 로 설정하시면 됩니다. 그리고 파일 탐색만 SSH로 처리하고, 프로그램 실행 환경은 윈도우를 기준으로 하는 줄 알았더니 저기서 명령어를 실행하면 NAS 쪽에서 실행이 됩니다.

 

그러니 메인 PC에서 Node.js가 깔려있다고 해도 지금은 SSH로 NAS 쪽으로 연결한거라 NAS 쪽에서도 node.js 가 잘 깔려 있어야 실행이 됩니다. (별개의 환경인 상태)

 

사실 SSH로 작업하는거라 모든 실행이 NAS쪽에서 이루어지는건데 왜 햇갈렸을까요 ^^;; 

어쨌던 NAS쪽에서 실행하는거라 많이 느린 단점이 있긴한데 이제 따로 파일을 옮기는 작업이 없어졌단건 좋습니다. 그래도 해보니깐 그냥 PC에서 작업한다음에 옮기는게 더 좋더라구요... 어쨌던 뭐 공부한거라고 생각합니다.

 

그리고 추가적으로 "그냥 VSCode에서 폴더 열기로 NAS로 연결된 SAMBA 폴더 열면되지 왜 SSH로 접속해서 작업하느냐?" 라고 물어볼 수 있는데..

 

PS Microsoft.PowerShell.Core\FileSystem::\\192.168.1.100\docker\open_source_server> nodemon ./index.ts
[nodemon] 2.0.19
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: ts,json
[nodemon] starting `ts-node ./index.ts`
'\\192.168.1.100\docker\open_source_server'
CMD.EXE was started with the above path as the current directory.
UNC paths are not supported.  Defaulting to Windows directory.

기본적으로 이렇게 Vscode 폴더 열기로 터미널 명령어를 실행하면

 

CMD.EXE was started with the above path as the current directory.
UNC paths are not supported.  Defaulting to Windows directory.

 

와 같은 메세지가 뜨면서 제대로 경로 작업이 안됩니다. 한마디로 CMD는 네트워크 경로로 작업할 수 없다는 거죠 -.-

사실 저게 됐으면 파일만 NAS에서 열고 실행만 윈도우에서 작업하는 처음에 원하는 그림이 됐을겁니다만 잘 안되서 쓰게 됬습니다.

COMMENT WRITE