Tailscale SSH 설정하기: SSH 키 없이 안전하게 접속
Tailscale SSH 설정하기: SSH 키 없이 안전하게 접속
서버에 SSH 접속할 때 보통 ACL(Access Control List)에서 22번 포트를 열고, SSH 키를 관리해야 한다. Tailscale SSH를 사용하면 SSH 키 관리 없이 Tailscale 인증만으로 접근할 수 있다.
단, ACL의 acls 섹션에서 포트 22는 여전히 열어야 한다. Tailscale SSH라고 해서 포트 22가 필요 없는 것은 아니다.
일반 SSH vs Tailscale SSH
일반적으로 Tailscale 네트워크에서 SSH를 사용하는 방식은 두 가지다.
일반 SSH (Tailscale 네트워크 경유)
- ACL의
acls섹션에서 포트 22를 열어야 함 - 시스템의 OpenSSH 서버(sshd)를 사용
- SSH 키 또는 비밀번호로 인증
Tailscale SSH
- ACL의
acls섹션에서 포트 22를 열어야 함 (일반 SSH와 동일) - 추가로
ssh섹션에서 접근 제어 - Tailscale 데몬 자체가 SSH 서버 역할 (OpenSSH 대신)
- Tailscale 인증으로 접근 (SSH 키 불필요)
- 세션 로깅 등 추가 기능 제공
핵심 차이는 인증 방식 이다. 일반 SSH는 SSH 키나 비밀번호가 필요하지만, Tailscale SSH는 Tailscale 인증으로 대체한다. 포트 22는 둘 다 필요하다.
설정 방법
1. 대상 서버에서 Tailscale SSH 활성화
SSH로 접속할 대상 서버에서 다음 명령어를 실행한다:
sudo tailscale set --ssh
아무 출력 없이 끝나면 정상이다. 활성화 여부를 확인하려면:
tailscale debug prefs | grep RunSSH
"RunSSH": true 가 나오면 정상적으로 활성화된 것이다.
2. ACL 설정
Tailscale Admin Console에서 acls 와 ssh 두 섹션을 모두 설정해야 한다:
{
"acls": [
{
"action": "accept",
"src": ["autogroup:members"],
"dst": ["autogroup:members:*"]
}
],
"ssh": [
{
"action": "accept",
"src": ["autogroup:members"],
"dst": ["autogroup:self"],
"users": ["root"]
}
]
}
특정 태그가 붙은 기기만 허용하려면:
{
"acls": [
{
"action": "accept",
"src": ["autogroup:members"],
"dst": ["autogroup:members:*"]
}
],
"ssh": [
{
"action": "accept",
"src": ["tag:office-ubuntu"],
"dst": ["tag:ncloud-server"],
"users": ["root"]
}
]
}
중요: acls 에서 포트 22를 포함하는 규칙이 반드시 있어야 한다. * (전체 포트)로 열거나, 최소한 22번 포트를 명시해야 한다. acls 가 비어있거나 포트 22가 빠져있으면 Tailscale SSH도 연결되지 않는다.
Tailscale SSH의 실제 장점
포트 22가 여전히 필요하다면 Tailscale SSH를 쓰는 이유가 뭘까?
- SSH 키 관리 불필요 — Tailscale 계정 인증으로 대체
- 세션 로깅 — 누가 언제 접속했는지 기록
sshACL로 세분화된 접근 제어 — 어떤 사용자가 어떤 서버에 어떤 계정으로 접속할 수 있는지 제어- 별도 sshd 설정 불필요 — Tailscale 데몬이 SSH 서버 역할
즉, 포트를 줄이는 것이 아니라 인증과 접근 관리를 편하게 만드는 것이 핵심이다.
acls 전체 오픈이 보안상 괜찮은 이유
"dst": ["autogroup:members:*"] 로 모든 포트를 열면 불안할 수 있지만, Tailscale 네트워크 특성상 문제없다:
- 외부(인터넷)에서는 접근 불가 — tailnet에 등록된 기기끼리만 통신
- 기기 추가에 본인 인증 필요 — 허가 없이 tailnet에 진입 불가
- Tailscale 기본 설정도 전체 오픈 — 기본 정책이
autogroup:members:*
tailnet 진입 자체가 보안 경계이기 때문에, 개인 사용이나 소규모 팀이면 전체 오픈으로 충분하다.
접속 테스트
설정이 완료되면 Tailscale IP 또는 MagicDNS 호스트명으로 접속한다:
# Tailscale IP로 접속
ssh root@100.x.x.x
# MagicDNS 호스트명으로 접속 (MagicDNS 활성화 시)
ssh root@hostname.tail12345.ts.net
정리
Tailscale SSH를 쓰려면 세 가지를 모두 설정해야 한다:
- 대상 서버:
sudo tailscale set --ssh - ACL
acls섹션: 포트 22를 포함한 노드 간 통신 허용 - ACL
ssh섹션: SSH 접근 규칙 추가
Tailscale SSH는 포트 22를 없애는 것이 아니라, SSH 키 관리와 인증을 Tailscale로 통합 하는 것이다.