Tailscale SSH 설정하기: SSH 키 없이 안전하게 접속

English (N/A)

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에서 aclsssh 두 섹션을 모두 설정해야 한다:

{
  "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 계정 인증으로 대체
  • 세션 로깅 — 누가 언제 접속했는지 기록
  • ssh ACL로 세분화된 접근 제어 — 어떤 사용자가 어떤 서버에 어떤 계정으로 접속할 수 있는지 제어
  • 별도 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를 쓰려면 세 가지를 모두 설정해야 한다:

  1. 대상 서버: sudo tailscale set --ssh
  2. ACL acls 섹션: 포트 22를 포함한 노드 간 통신 허용
  3. ACL ssh 섹션: SSH 접근 규칙 추가

Tailscale SSH는 포트 22를 없애는 것이 아니라, SSH 키 관리와 인증을 Tailscale로 통합 하는 것이다.

연관 포스트

참고