NAS를 사용하다 보면 터미널을 생각보다 자주 사용하게 된다.
Docker 컨테이너를 확인하거나, 설정 파일을 수정하거나, 로그를 확인하는 등 웹 UI만으로는 처리하기 애매한 작업들이 생기기 때문이다. 처음에는 관리자 페이지에서 대부분 해결할 수 있을 것 같지만, 직접 운영하다 보면 결국 SSH로 접속해서 작업하는 일이 많아진다.
문제는 이 과정이 은근히 반복된다는 것이다.
예를 들어 NAS에 접속할 때마다 다음과 같이 입력해야 한다.
그리고 비밀번호를 입력한 뒤, 다시 원하는 폴더로 이동한다.
cd .. (이전 폴더)
cd ls (폴더 목록 확인)
cd volume1
cd docker
cd mastodon한두 번이면 괜찮지만, 자주 반복하다 보면 꽤 귀찮다.
그래서 내가 NAS를 사용하면서 가장 만족했던 설정은 크게 두 가지였다.
ssh nas처럼 짧은 명령어로 NAS에 접속하기z ghost처럼 짧은 명령어로 자주 가는 폴더로 이동하기
이번 글에서는 그중 첫 번째인 SSH 접속을 편하게 만드는 방법을 정리한다.
즉, 최종 목표는 다음과 같다.
ssh nas이 명령어 하나로 NAS에 접속하는 것이다.
SSH 접속 명령어 이해하기
먼저 기본 SSH 접속 명령어부터 살펴보자.
일반적인 형태는 다음과 같다.
ssh 사용자명@NAS_IP주소예를 들어 내 환경에서는 다음과 같이 접속한다.
여기서 각 항목의 의미는 다음과 같다.
ssh: SSH 접속 명령어zenn: NAS에 로그인할 사용자 계정@: 사용자명과 접속 주소를 구분하는 기호192.168.50.147: NAS의 IP 주소
즉 위 명령어는 다음과 같은 의미다.
192.168.50.147주소를 가진 NAS에zenn계정으로 접속한다.
여기서 zenn과 192.168.50.147은 내 환경의 예시일 뿐이다. 자신의 환경에서는 NAS 사용자명과 NAS IP 주소를 넣어야 한다.
예를 들어 사용자명이 admin이고 NAS IP가 192.168.0.50이라면 다음과 같이 입력한다.
먼저 SSH Alias를 설정하자
매번 ssh [email protected]처럼 입력하는 것은 번거롭다.
이럴 때 사용할 수 있는 것이 SSH Alias다.
SSH Alias는 쉽게 말해 SSH 접속 정보를 미리 저장해두고, 짧은 이름으로 불러오는 기능이다.
예를 들어 다음과 같은 긴 명령어를:
앞으로는 이렇게 줄일 수 있다.
ssh nasSSH config 파일 열기
Mac 또는 Linux에서는 SSH 설정을 ~/.ssh/config 파일에 저장할 수 있다.
터미널에서 다음 명령어를 입력한다.
nano ~/.ssh/config만약 파일이 없다면 새 파일이 열린다.
NAS 접속 정보 등록하기
~/.ssh/config 파일에 다음 내용을 추가한다.
Host nas
HostName 192.168.50.147
User zenn
Port 22각 항목의 의미는 다음과 같다.
Host nas| 앞으로 사용할 접속 별칭. 여기서는ssh nas로 접속하게 된다.HostName 192.168.50.147| 실제 NAS의 IP 주소User zenn| NAS에 로그인할 사용자 계정Port 22| SSH 접속 포트. 기본값은 보통 22번이다.
자신의 환경에 맞게 수정한다면 다음처럼 생각하면 된다.
Host 원하는별칭
HostName NAS_IP주소
User NAS사용자명
Port SSH포트번호nano 기본 사용법
이번 설정에서는 nano 편집기를 사용한다.
처음 사용하면 마우스 클릭이 되지 않아 당황할 수 있는데, nano는 기본적으로 키보드로 조작하는 터미널 편집기다.
자주 사용하는 단축키는 다음과 같다.
- 저장 |
Ctrl + O - 종료 |
Ctrl + X - 한 줄 삭제 |
Ctrl + K - 삭제한 줄 복구 |
Ctrl + U - 검색 |
Ctrl + W
수정한 내용을 저장하려면 Ctrl + O를 누른다. 그러면 아래쪽에 파일명을 확인하는 문구가 나타난다.
File Name to Write:여기서 반드시 Enter를 눌러야 저장이 완료된다.
또는 Ctrl + X로 종료하려고 할 때 저장하지 않은 내용이 있으면 다음과 같이 물어본다.
Save modified buffer?이 경우 Y를 누른 뒤, 파일명을 확인하는 화면에서 다시 Enter를 눌러야 저장된다.
SSH Alias 접속 테스트
저장 후 터미널에서 다음 명령어를 입력한다.
ssh nas정상적으로 설정되었다면 기존에 입력하던 다음 명령어와 동일하게 동작한다.
다만 이 단계에서는 아직 비밀번호를 입력해야 한다.
즉 현재 상태는 다음과 같다.
기존: ssh [email protected]
변경: ssh nas접속 명령어는 짧아졌지만, 비밀번호 입력은 그대로 남아 있다.
비밀번호 입력까지 없애고 싶다면 SSH Key를 사용하자
ssh nas만으로 접속할 수 있게 되었지만, 여전히 비밀번호를 입력해야 한다면 한 단계 더 설정할 수 있다.
바로 SSH Key 로그인이다.
SSH Key 로그인은 비밀번호 대신 키 파일을 이용해 인증하는 방식이다.
간단히 말하면 내 컴퓨터에는 개인 키를 보관하고, NAS에는 공개 키를 등록한다.
이후 접속할 때 NAS가 등록된 공개 키를 확인하여 인증을 처리한다.
설정이 끝나면 다음과 같이 입력했을 때 비밀번호 입력 없이 바로 접속할 수 있다.
ssh nasRSA와 ED25519는 무엇일까?
SSH 키를 생성하는 방법을 검색하다 보면 RSA와 ED25519라는 용어를 자주 보게 된다.
둘 다 SSH 키를 생성하기 위한 암호화 알고리즘이다.
RSA
RSA는 오랫동안 사용되어 온 공개키 암호화 방식이다.
과거에는 SSH 키를 생성하면 기본적으로 RSA를 사용하는 경우가 많았다. 그래서 예전 SSH 설정을 보면 다음과 같은 파일을 자주 볼 수 있다.
id_rsa
id_rsa.pubRSA는 오래 사용된 만큼 호환성이 좋다는 장점이 있다.
하지만 최근에는 보안을 위해 더 긴 키 길이를 사용하는 경우가 많고, 상대적으로 키 크기가 크고 처리 효율이 떨어지는 편이다.
ED25519
ED25519는 비교적 최신 공개키 알고리즘이다.
RSA보다 짧은 키 길이로도 높은 보안성을 제공하며, 키 생성 속도와 인증 속도도 빠르다.
현재 대부분의 Linux 배포판과 NAS 환경에서 지원하므로, 특별한 이유가 없다면 새로 만드는 SSH 키는 ED25519를 사용하는 것이 좋다.
SSH 키 생성하기
Mac 또는 Linux 터미널에서 다음 명령어를 실행한다.
ssh-keygen -t ed25519 -f ~/.ssh/nas-dxp6800pro이 명령어는 ~/.ssh/nas-dxp6800pro라는 이름의 SSH 키를 생성한다.
생성 과정에서 passphrase를 입력하라는 메시지가 나올 수 있다.
개인 용도에서 편의성을 우선한다면 그냥 Enter를 눌러 비워둘 수 있다.
passphrase를 설정하면 보안은 더 좋아지지만, 접속 시 추가 입력이 필요할 수 있다.
명령어의 의미는 다음과 같다.
-t ed25519| ED25519 알고리즘으로 키 생성-f ~/.ssh/nas-dxp6800pro| 생성할 키 파일 이름 지정
키 이름은 자신의 환경에 맞게 정하면 된다.
예를 들어 메인 NAS용 키라면:
ssh-keygen -t ed25519 -f ~/.ssh/nas-dxp6800pro보조 NAS용 키라면:
ssh-keygen -t ed25519 -f ~/.ssh/nas-ex처럼 관리할 수 있다.
키 생성 시 메모 추가하기
원한다면 키에 설명을 추가할 수 있다.
ssh-keygen -t ed25519 -f ~/.ssh/nas-dxp6800pro -C "Mac Mini"여기서 -C는 Comment, 즉 메모를 의미한다.
공개 키를 확인했을 때 끝부분에 다음과 같이 표시된다.
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... Mac Mini-C 옵션을 사용하지 않으면 보통 현재 사용자명과 컴퓨터명이 자동으로 들어간다.
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... zenn@Mac-mini이 부분은 취향에 따라 선택하면 된다.
개인적으로는 파일명으로 키의 용도를 구분하고, NAS의 authorized_keys 파일에는 주석으로 어떤 PC에서 사용하는 키인지 남겨두는 방식을 선호한다.
생성된 키 확인하기
키 생성이 완료되면 다음 두 파일이 만들어진다.
~/.ssh/nas-dxp6800pro
~/.ssh/nas-dxp6800pro.pub확장자가 없는 파일은 개인 키다.
nas-dxp6800pro개인 키는 절대 외부에 공개하면 안 된다.
.pub이 붙은 파일은 공개 키다.
nas-dxp6800pro.pubNAS에 등록할 것은 공개 키다.
다음 명령어로 공개 키 내용을 확인한다.
cat ~/.ssh/nas-dxp6800pro.pub출력되는 한 줄 전체를 복사한다.
NAS에 공개 키 등록하기
NAS에 접속한 뒤 authorized_keys 파일을 연다.
이미 SSH Alias를 설정했다면 다음 명령어로 접속할 수 있다.
ssh nas그 다음 NAS에서 다음 명령어를 실행한다.
nano ~/.ssh/authorized_keys파일 맨 아래에 방금 복사한 공개 키를 붙여넣는다.
이때 어떤 PC에서 사용하는 키인지 주석을 함께 남겨두면 나중에 관리하기 편하다.
# Mac Mini
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... bicute@Mac-mini집 PC나 노트북에서도 접속할 예정이라면 장비마다 별도의 키를 만들고 각각 등록하는 것을 추천한다.
예를 들면 다음과 같이 관리할 수 있다.
# Mac Mini
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... bicute@Mac-mini
# Home Desktop
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... home-desktop
# MacBook Air
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... macbook-air하나의 개인 키를 여러 컴퓨터에 복사해서 사용하는 것도 가능하지만, 보안과 관리 측면에서는 장비마다 키를 따로 만드는 것이 더 좋다.
나중에 특정 PC를 더 이상 사용하지 않게 되면 해당 줄만 삭제하면 되기 때문이다.
SSH Key 접속 테스트
공개 키를 등록했다면, 우선 새 키를 직접 지정해서 접속해본다.
Mac 또는 Linux 터미널에서 다음 명령어를 실행한다.
ssh -i ~/.ssh/nas-dxp6800pro [email protected]정상적으로 접속된다면 SSH Key 등록이 성공한 것이다.
여기서도 zenn과 192.168.50.147은 내 환경의 예시이므로 자신의 NAS 사용자명과 IP 주소로 바꿔야 한다.
SSH Alias에 키 파일 연결하기
이제 ssh nas 명령어를 사용할 때 방금 만든 키를 사용하도록 설정한다.
Mac 또는 Linux에서 SSH config 파일을 다시 연다.
nano ~/.ssh/config기존 설정에 IdentityFile 항목을 추가한다.
Host nas
HostName 192.168.50.147
User zenn
Port 22
IdentityFile ~/.ssh/nas-dxp6800pro의미는 다음과 같다.
IdentityFile ~/.ssh/nas-dxp6800pro| 사용할 SSH 개인 키
이제 다음 명령어로 접속해본다.
ssh nas정상적으로 설정되었다면 비밀번호를 입력하지 않고 바로 접속된다.
여러 NAS를 사용할 경우
NAS가 여러 대라면 Host와 IdentityFile을 나누어 관리할 수 있다.
예를 들어 메인 NAS와 보조 NAS가 있다면 다음과 같이 작성할 수 있다.
Host nas
HostName 192.168.50.147
User zenn
Port 22
IdentityFile ~/.ssh/nas-dxp6800pro
Host ex
HostName 192.168.50.148
User zenn
Port 22
IdentityFile ~/.ssh/nas-ex그러면 각각 다음 명령어로 접속할 수 있다.
ssh nasssh ex이렇게 설정해두면 IP 주소를 외우지 않아도 되고, 어떤 키를 사용하는지도 명확하게 관리할 수 있다.
마치며
이번 글에서는 NAS에 SSH로 접속할 때 긴 명령어를 줄이고, 비밀번호 입력까지 없애는 방법을 정리했다.
처음에는 다음과 같이 접속했다.
SSH Alias를 설정하면 다음처럼 줄일 수 있다.
ssh nas여기에 SSH Key까지 등록하면 비밀번호 입력 없이 바로 접속할 수 있다.
다만 NAS에 접속한 뒤에도 자주 사용하는 폴더로 이동하는 과정은 여전히 번거롭다.
예를 들어 Docker 프로젝트 폴더로 이동하기 위해 매번 다음과 같이 입력해야 할 수 있다.
cd /volume1/docker/services/immich이 부분은 다음 글에서 zoxide를 이용해 z ghost처럼 자주 가는 폴더로 바로 이동하는 방법으로 정리해볼 예정이다.
0 Comments
댓글은 로그인한 회원만 작성할 수 있습니다.
로그인하러 가기첫 댓글을 남겨보세요.