시놀로지 SSH 접속 시 다른 쉘 사용하기
요즘 시놀로지 SSH에 접속할 일이 많아져서 아예 포트를 열고 사용하고 있습니다. 그런데 일반적으로 시놀로지 SSH에 접속하면 유닉스 오리지널 쉘인 Bourne Shell(/bin/sh)로 접속하게 됩니다. 그런데 저는 이게 마음에 들지는 않습니다. 그래서 다른 쉘로 갈아타보도록 하겠습니다.
저는 fish 를 사용할건데 레퍼런스인 아래 링크를 보면 zsh로 되어있으나 경로만 잘 찾아서 입력하면 bash, fish 등 다른 쉘로도 얼마든지 변경 가능합니다. 저도 fish 써보다가 익숙한 bash로 다시 넘어갈지도 모르겠네요.
https://3os.org/infrastructure/synology/Install-oh-my-zsh
0. home 디렉터리 활성화하기
이 방법은 home 디렉터리에 .profile 파일을 넣음으로 쉘을 변경하는 방법이기 때문에 꼭 제어판 -> 사용자 및 그룹(DSM 7.0) -> 고급 -> 사용자 홈 서비스 활성화 에 체크하셔야합니다.
1. 쉘 설치
먼저 쉘을 깔아주는 작업을 해야합니다.
패키지 센터 -> 설정 -> 패키지 소스 로 이동하여 아래의 URL을 추가합니다.
이렇게 추가하면 끝입니다.
그리고 패키지 센터 -> 커뮤니티 -> fish 로 이동하여 설치하면 작업은 끝이납니다.
(더 밑으로 가면 z shell도 있습니다.)
(검색해서 찾으셔도 됩니다.)
2. 사용하고 싶은 쉘의 경로 찾기
레퍼런스에는 없는 부분입니다. 일반적인 리눅스 배포판에서는 /bin/ 디렉터리 안에 명령어들이 있는 경우가 많지만 시놀로지에서는 다릅니다. 각 패키지들이 설치되는 공간이 다르기 때문이죠. 따라서 쉘의 경로를 찾아서 제대로 경로를 지정해주어야합니다.
https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EB%AA%85%EB%A0%B9%EC%96%B4_%EC%9C%84%EC%B9%98_%ED%99%95%EC%9D%B8
위의 링크를 참고하여 확인하면 됩니다. 저는 아래의 명령어를 사용했습니다.
그러면 아래와 같이 명령어의 디렉터리를 찾게 됩니다.
(fish를 이미 설치해서 색이 여러가지로 나옵니다 :D)
대부분의 사용자가 설치한 명령어는 저 디렉터리(/usr/local/bin/)에 설치되는 것 같습니다. 저 디렉터리를 복사해놓거나 잘 기억해 두시면 됩니다.
3. 기본 쉘 변경하기
원래는 /etc/passwd 에서 쉘을 변경할 수 있지만 시놀로지는 그렇지 못합니다. id/pw를 정상으로 입력하거나 키를 이용해서 접속해도 동일하게 permission denied 라는 오류를 뿜어대며 접속을 거부하죠. 이 부분은 외국 커뮤니티를 확인해본 결과 쉘에 ash와 sh만 사용하도록 하드코딩이 되어있어서 /etc/passwd를 변경한 것으로는 접속 자체가 불가능합니다. 그래서 그 글에서는 쉘을 다시 빌드하는 것으로 해결을 했다고 하더군요. 하지만 그렇게까지 할 필요는 없습니다.
SSH로 접속해서 아래의 명령어를 입력합니다.
그리고 i를 눌러 입력모드로 변경한 뒤 아래의 스크립트를 입력해줍니다. 빨간색이 디렉터리 부분으로 2에서 찾은 디렉터리를 넣으시면 됩니다.
export SHELL=/usr/local/bin/fish
exec /usr/local/bin/fish
fi
혹은 메모장에서 위의 스크립트를 입력하여 .profile 파일명으로 저장하여 home 디렉터리에 업로드 하셔도 무방합니다.
대충 스크립트를 보면 꼼수로 실행한 것 같은데 잘 실행되었으니 넘어가도 되지 않을까 싶습니다. 원래는 .profile에 /usr/local/bin/fish 만 넣어놨을 때는 접속이 되긴 했지만 접속 종료 시 exit을 두번이나 입력해야하는데다 echo $SHELL 입력 시 /bin/sh가 떴는데 이 방법을 사용하니까 그런 문제가 깔끔하게 사라지더군요.
이렇게 잘 접속이 됩니다 :D
이제 SSH 키 접속 전용으로 돌려놓고 쉘도 변경했으니 자주 접속해서 관리해야겠습니다.