교육 문의커뮤니티 입장하기

테일스케일 SSH 설정 방법: 키 배포, 접근 제어, 지원 환경 정리

집 컴퓨터에 원격으로 접속할 때 테일스케일과 SSH는 각각 무엇을 맡을까요? 일반 SSH를 테일스케일로 연결하는 방법과 Tailscale SSH 기능을 구분하고, 지원 환경과 첫 접속 확인 순서를 설명합니다.

지금까지 100명 넘게 읽었어요, 77%가 끝까지 읽었어요
Share
테일스케일 SSH 설정 방법: 키 배포, 접근 제어, 지원 환경 정리 대표 이미지
목차
  1. 먼저 두 가지 사용 방법을 구분합니다
  2. 직접 관리하는 SSH에서 번거롭던 세 가지
  3. 테일스케일의 구조: 연결 정보와 실제 데이터
  4. Tailscale SSH가 일반 SSH와 다른 점
  5. 리눅스 호스트에서 켜고 첫 접속하기
  6. 접근 제어 정책으로 권한을 다루는 방식
  7. 도입 전에 볼 제한 사항
  8. 요금제와 사용 범위
  9. 자주 묻는 질문
  10. 참고 자료
  11. 3줄 요약

세 줄로 먼저 읽기

  1. 테일스케일은 기기들을 테일넷이라는 사설 네트워크로 묶는 VPN 도구이고 Tailscale SSH는 그 안에서 SSH 인증과 권한을 테일스케일 신원과 정책으로 관리하는 별도 기능입니다.
  2. 호스트에서 tailscale set --ssh를 실행하면 테일넷에서 들어오는 22번 포트 접속을 테일스케일이 맡고, 정책에서 네트워크 접근과 SSH 접근이 모두 허용돼야 접속됩니다.
  3. Tailscale SSH 서버는 리눅스와 macOS 오픈소스 CLI에서만 동작하므로 맥 앱이나 윈도우 호스트는 기존 SSH 서버에 테일스케일 주소로 접속하는 방식을 씁니다.

테일스케일(Tailscale)은 여러 기기를 하나의 사설 네트워크로 묶어 주는 VPN 도구입니다. 테일스케일 SSH는 그 네트워크 안에서 SSH 접속의 인증과 권한을 테일스케일이 대신 관리하는 기능입니다. 테일스케일을 설치해도 이 SSH 기능은 따로 켜야 동작합니다.

집에 둔 컴퓨터에 AI 코딩 에이전트를 띄워 놓고 밖에서 노트북으로 접속해 일하는 방식이 늘면서, 원격 접속을 어디까지 설정해야 하는지 묻는 경우도 많아졌습니다. 아래에서는 테일스케일과 SSH가 각각 맡는 일, 둘을 함께 쓰면 달라지는 점, 설정 순서와 제한 사항을 공식 문서 기준으로 설명합니다.

먼저 두 가지 사용 방법을 구분합니다

집의 맥미니를 밖의 노트북에서 조작하는 경우를 예로 들겠습니다. 노트북은 접속하는 컴퓨터, 맥미니는 접속받는 컴퓨터인 호스트입니다. SSH는 호스트의 명령창을 원격으로 쓰는 방식이며, 바탕화면 전체를 보여 주지는 않습니다.

테일스케일과 SSH를 함께 쓰는 방법은 두 가지입니다. 하나는 호스트의 기존 SSH 서버에 테일스케일 주소로 접속하는 방법이고, 다른 하나는 테일스케일이 띄우는 SSH 서버를 쓰는 Tailscale SSH 기능입니다.

테일스케일로 SSH를 쓰는 두 가지 방법

항목일반 SSH테일스케일 주소로 접속Tailscale SSH테일스케일의 SSH 서버
접속을 받는 서버호스트의
기존 SSH 서버
테일스케일이
띄운 SSH 서버
인증비밀번호나
공개 키
테일스케일
신원과 정책
리눅스 호스트제공제공
macOS 오픈소스 CLI 호스트제공제공
맥 앱이나 윈도우 호스트제공제공하지 않음
공식 Tailscale SSH 문서 기준입니다. 접속하는 쪽은 어느 운영체제든 테일스케일과 SSH 클라이언트가 있으면 됩니다.

macOS 오픈소스 CLI는 명령행 프로그램인 tailscale과 백그라운드에서 연결을 유지하는 tailscaled를 직접 설치한 구성입니다. 일반 맥 앱만 설치했다면 Tailscale SSH 서버를 켤 수 없습니다.

맥 앱이나 윈도우를 쓰고 원격 접속이 처음이라면 일반 SSH 첫 접속 안내대로 접속한 뒤 주소만 테일스케일 주소로 바꿉니다. 이 글의 설정 절차는 테일스케일이 이미 설치된 본인 소유의 리눅스 호스트와 접속용 컴퓨터를 기준으로 합니다.

위 화면은 테일스케일 공식 블로그에 실린 실제 화면입니다. 왼쪽 관리 콘솔의 기기 목록에서 초록색 SSH 표시가 붙은 기기가 Tailscale SSH를 켠 호스트입니다. 오른쪽은 터미널 프로그램을 따로 열지 않고 브라우저 창 안에서 라즈베리파이에 접속한 SSH 세션입니다.

직접 관리하는 SSH에서 번거롭던 세 가지

SSH(Secure Shell)는 내 컴퓨터의 터미널에서 멀리 있는 다른 컴퓨터에 접속해 명령을 내리는 표준 방식입니다. 접속해 있는 동안에는 그쪽 컴퓨터의 터미널을 내 화면에서 그대로 씁니다.

공개 키 방식으로 SSH를 직접 관리하면 서버가 늘어날 때마다 키 배포, 외부 접속 설정, 권한 회수를 서버마다 따로 처리해야 합니다. Tailscale SSH는 이 세 가지를 테일넷과 정책 파일 한 곳으로 옮깁니다.

서버가 늘어날 때 하는 일

하는 일직접 관리하는 SSHTailscale SSH
키 배포서버마다
authorized_keys에 등록
테일스케일이
필요한 키를 관리
밖에서 접속공인 IP와
포트 포워딩
테일넷 주소로
바로 접속
함께 쓰던 사람이 빠질 때서버마다
그 사람의 키 삭제
정책 파일
한 곳 수정
비밀번호나 인증서, 별도 VPN을 쓰는 구성은 왼쪽 열과 절차가 다릅니다.

공개 키 인증에서는 접속하는 쪽에서 키 한 쌍을 만들고, 그 가운데 공개 키를 접속 대상 컴퓨터의 ~/.ssh/authorized_keys 파일에 넣어 둡니다. 집이나 사무실 안쪽의 컴퓨터는 밖에서 바로 보이지 않아서, 인터넷에서 직접 접속하려면 공유기로 온 접속을 내부 컴퓨터에 넘기는 포트 포워딩이 필요합니다. 서버 목록이 정확하지 않으면 권한을 회수할 때 일부 서버의 공개 키를 빠뜨리기 쉽습니다.

테일스케일의 구조: 연결 정보와 실제 데이터

테일스케일은 기기 사이 통신을 암호화하는 WireGuard 기술로 동작합니다. 각 기기에 클라이언트를 설치하고 같은 계정으로 로그인하면, 그 기기들이 테일넷(tailnet)이라는 사설 네트워크 하나에 들어갑니다. 위 다이어그램처럼 모든 클라이언트는 먼저 테일스케일의 조정 서버(coordination server)에 연결합니다.

조정 서버가 주고받는 것은 기기 정보, 공개 키, 접근 정책 같은 연결 정보입니다. 실제 데이터는 되도록 기기끼리 직접 보내고, 직접 연결이 어려우면 중계 서버를 거칩니다. 어느 경로든 기기 사이에서 암호화되므로 중계 서버도 전달 내용을 풀어 읽지 못합니다.

관리 콘솔에서는 각 기기의 테일스케일 IP 주소를 복사할 수 있습니다. 매직DNS(MagicDNS)는 기기 이름으로 주소를 찾게 해 주는 기능이고, 켜 두면 IP 대신 mac-mini처럼 등록된 이름으로 접속할 수 있습니다.

Tailscale SSH가 일반 SSH와 다른 점

Tailscale SSH를 켜면 테일넷에서 들어오는 접속에 한해 22번 포트를 테일스케일이 가져갑니다. 공식 문서는 이 동작을 "Tailscale takes over port 22 for SSH connections incoming from the Tailscale network"라고 적습니다. 그래서 테일스케일 주소로 온 SSH 요청은 원래 쓰던 SSH 서버가 아니라 테일스케일의 SSH 서버가 받습니다.

일반 SSH와 Tailscale SSH의 동작 차이

항목일반 SSHTailscale SSH
인증 근거비밀번호, 공개 키,
인증서 중 설정한 것
테일스케일
신원과 정책
접근 제어서버별 설정정책 파일에서
한꺼번에
포트자유롭게 지정22번 고정
세션 녹화별도 도구레코더를 따로
설정하면 지원
sshd_config와 authorized_keys직접 수정건드리지 않음
Tailscale SSH 공식 문서 기준입니다.

인증 단계도 다릅니다. 테일스케일 SSH 서버는 WireGuard 연결 단계에서 상대가 누구인지 이미 확인했기 때문에, SSH 프로토콜의 인증 방식으로 none을 쓰고 SSH 공개 키를 따로 요구하지 않습니다. 정책에 따라서는 브라우저로 신원을 한 번 더 확인합니다. SSH 자체 암호화 위에 WireGuard 암호화가 한 겹 더해집니다.

/etc/ssh/sshd_config와 ~/.ssh/authorized_keys는 그대로 남으므로, 테일넷을 거치지 않는 기존 SSH 접속은 계속 동작합니다.

리눅스 호스트에서 켜고 첫 접속하기

이 절차는 Tailscale SSH 서버를 켜는 과정입니다. 일반 SSH를 테일스케일 주소로 쓰기만 할 때는 이 기능을 켜지 않습니다. 전체 순서는 다섯 단계입니다.

Tailscale SSH를 켜고 접속하는 순서

  1. 1. 이름과 계정 적기호스트에서 hostname,
    whoami 결과 적기
  2. 2. 기능 켜기호스트 로컬 터미널에서
    tailscale set --ssh
  3. 3. 권한 두 가지22번 포트 접근과
    SSH 계정 접근
  4. 4. 접속하기노트북에서
    ssh 계정@주소
  5. 5. 도착 확인hostname, whoami가
    1단계와 같으면 성공

1. 호스트의 이름과 계정을 적어 둡니다. 먼저 두 컴퓨터가 같은 테일넷에 등록돼 온라인인지 관리 콘솔에서 봅니다. 접속받을 리눅스 컴퓨터에서 터미널을 열고 아래 명령을 한 줄씩 실행해 결과를 적어 둡니다.

hostname whoami

첫 줄은 컴퓨터 이름, 둘째 줄은 현재 사용자 계정입니다. 아래에서는 기기 이름을 home-linux, 사용자 계정을 juni라고 하겠습니다. SSH 사용자 이름에는 구글 로그인 이메일이 아니라 이 일반 사용자 계정을 씁니다. 호스트의 테일스케일 주소도 관리 콘솔에서 복사해 둡니다. 콘솔에 등록된 이름은 hostname 출력과 다를 수 있어서, 이름으로 접속하려면 콘솔에 표시된 이름을 씁니다.

2. 호스트에서 Tailscale SSH를 켭니다. 호스트 앞에 앉아 연 터미널에서 실행합니다.

tailscale set --ssh

권한이 부족하다는 메시지가 나오면 관리자 권한으로 실행해야 합니다. 본인이 관리하는 리눅스라면 sudo tailscale set --ssh로 실행합니다. 명령을 찾을 수 없다는 오류가 나오면 테일스케일 CLI가 설치됐는지, 명령 경로에 들어 있는지부터 봅니다.

이 설정을 켜는 순간 테일스케일 주소로 들어오는 22번 포트 접속을 테일스케일이 맡습니다. 그 주소로 이미 열어 둔 일반 SSH 세션은 끊길 수 있어서, 원격 창이 아니라 호스트의 로컬 터미널에서 켭니다.

3. 두 종류의 접근 권한을 맞춥니다. 관리 콘솔의 Access controls에서 두 가지를 봅니다. 하나는 접속하는 기기가 호스트의 22번 포트에 닿을 수 있는지(네트워크 접근)이고, 다른 하나는 그 사용자가 Tailscale SSH로 호스트의 juni 계정에 들어갈 수 있는지(SSH 접근)입니다. 둘 다 허용돼야 접속됩니다.

정책을 한 번도 바꾸지 않았다면 기본 정책이 자신이 소유한 기기에 추가 신원 확인을 거쳐 접속하도록 허용합니다. 정책을 바꿨거나 기기에 태그를 붙였다면 이 기본 동작이 달라지므로 규칙을 직접 열어 봅니다. 회사에서 관리하는 테일넷이라면 관리자에게 접속할 기기와 계정을 알려 허용을 요청합니다. 아래 절의 예제 규칙으로 기존 정책 파일 전체를 덮어쓰지 않습니다.

4. 접속하는 컴퓨터의 터미널에서 연결합니다. USER는 호스트의 사용자 이름, ADDR는 복사한 테일스케일 주소로 바꿉니다.

ssh USER@ADDR

MagicDNS가 켜져 있다면 위 예에서는 ssh juni@home-linux입니다. 추가 로그인 링크가 나오면 방금 내가 시작한 접속이 맞는지 보고 브라우저에서 로그인합니다. 처음 보는 호스트 키 경고가 예상과 다르게 나오면 승인하지 말고 접속 대상이 맞는지부터 살펴봅니다.

5. 호스트에 도착했는지 확인하고 나옵니다. 접속한 창에서 hostname과 whoami를 다시 실행합니다.

노트북 터미널, home-linux에 접속
ssh juni@home-linux
hostname
home-linux
whoami
juni
1단계에 적은 이름과 계정이 나오면 호스트에 도착한 것입니다
설명을 위해 만든 화면입니다. 이름과 계정은 이 글의 예시 값입니다.

exit를 입력하면 원래 컴퓨터의 터미널로 돌아옵니다. 이 접속으로 AI 에이전트를 실행해 둘 생각이라면, SSH 연결이 끊긴 뒤에도 작업이 이어지도록 tmux 같은 세션 유지 도구를 함께 씁니다. SSH만으로는 연결이 끊기면 그 안에서 돌던 작업도 멈춥니다.

접속이 안 될 때 먼저 구분할 것

  • 기기 이름을 찾지 못함: MagicDNS 이름과 지금 로그인한 테일넷이 맞는지 보고, 관리 콘솔에서 복사한 IP 주소로 다시 시도합니다.
  • 시간 초과나 연결 거절: 호스트의 전원과 온라인 상태, 주소, 네트워크 접근 규칙, SSH 기능 설정을 차례로 봅니다. 방화벽 전체를 끄는 것은 해결 방법이 아닙니다.
  • 권한 거절이나 추가 인증 실패: 호스트에 그 사용자 계정이 있는지, SSH 정책에서 허용했는지, 올바른 테일스케일 계정으로 로그인했는지 봅니다.

다른 사람에게 도움을 요청할 때는 운영체제, 일반 SSH인지 Tailscale SSH인지, 실패한 단계, 오류 문구를 함께 보냅니다. 비밀번호와 키 내용은 보내지 않습니다.

접근 제어 정책으로 권한을 다루는 방식

위 다이어그램은 테일스케일의 접근 제어 개념을 보여 줍니다. 조정 서버가 각 기기에 정책을 전달하고, 허용되지 않은 연결은 차단됩니다. 그림 속 정책 표기는 개념 설명용이라 지금 정책 파일의 문법과는 다릅니다.

테일넷 정책 파일에는 누가 어떤 기기에 어떤 계정으로 접속할 수 있는지 적습니다. 아래는 정책 파일의 SSH 항목 안에 들어가는 규칙 하나입니다. 이 규칙과 별도로 앞에서 말한 네트워크 접근 허용도 있어야 합니다.

{ "action": "check", "src": ["autogroup:member"], "dst": ["autogroup:self"], "users": ["juni"], "checkPeriod": "20h" }

이 규칙은 테일넷 구성원이 자기 소유 기기의 juni 계정으로 접속하도록 허용합니다. juni 계정은 호스트에 이미 있어야 합니다. checkPeriod가 20h이므로 한 번 신원을 확인하면 20시간 동안은 다시 묻지 않습니다.

  • action: accept는 테일넷에 이미 로그인한 사용자를 그대로 받아들이고, check는 접속 전에 신원 공급자로 다시 로그인하게 합니다.
  • src: 접속을 시작하는 쪽입니다. autogroup:member는 테일넷 구성원입니다.
  • dst: 접속 대상입니다. autogroup:self는 접속하는 사용자 소유의 기기입니다. 포트는 적지 않으며, SSH는 22번 포트를 씁니다.
  • users: 호스트에서 쓸 계정 이름입니다. 호스트에 이미 있는 계정만 쓸 수 있고, 규칙이 계정을 새로 만들지는 않습니다.
  • checkPeriod: check일 때 다시 로그인을 요구하기까지의 간격입니다. always로 두면 접속할 때마다 확인합니다.

checkPeriod로 정할 수 있는 간격

  • 최소1분
  • 적지 않았을 때 기본값12시간
  • 위 예시 규칙20시간
  • 최대168시간
막대 길이는 168시간을 100으로 둔 비율이고, 1분 막대는 보이도록 최소 길이로 그렸습니다.

규칙은 제한이 강한 쪽부터 평가합니다. 같은 연결에 check 규칙과 accept 규칙이 함께 걸리면 check가 적용됩니다.

함께 쓰던 사람이 빠질 때는 서버를 돌며 키를 지우지 않고 정책 파일만 고칩니다. 공식 문서에 따르면 정책을 저장하면 클라이언트가 몇 초 안에 새 규칙을 따르고, 그 사람이 이미 열어 둔 SSH 세션도 끊깁니다.

도입 전에 볼 제한 사항

Tailscale SSH에는 바꿀 수 없는 조건이 몇 가지 있습니다.

Tailscale SSH의 고정 조건

  • 22번SSH 포트다른 포트로 바꾸는 방법 없음
  • v1.24서버 쪽 최소 버전테일스케일 기준
  • 2종서버가 되는 운영체제리눅스, macOS 오픈소스 CLI
  • 접속 대상 운영체제: 시놀로지와 QNAP에서는 Tailscale SSH 서버가 실행되지 않습니다. 접속을 시작하는 쪽은 어느 운영체제든 됩니다.
  • 연결 프로그램 재시작: 업그레이드처럼 tailscaled가 다시 시작되면 열려 있던 Tailscale SSH 세션이 끊깁니다.
  • 테일스케일이 없는 호스트: 다른 기기를 거쳐 테일넷에 연결된 기기라도, 호스트 자체에 테일스케일이 없으면 이 서버 기능을 쓸 수 없습니다.
  • 접속용 컴퓨터의 계정 구분 없음: Tailscale SSH는 접속용 컴퓨터의 OS 계정별 SSH 키로 사용자를 나누지 않습니다. 그래서 그 컴퓨터의 다른 로컬 사용자도 같은 테일스케일 신원으로 접속할 수 있습니다. 한 컴퓨터를 여러 사람이 쓴다면 공식 문서가 안내하는 대로 checkPeriod를 always로 둡니다.

이 가운데 걸리는 조건이 있다면 테일스케일은 네트워크 연결에만 쓰고, 그 위에서 기존 SSH 서버와 클라이언트를 그대로 씁니다. 서버를 인터넷에 직접 열지 않으면서 익숙한 SSH 방식을 유지하는 구성이고, 공식 문서도 이 방법을 대안으로 안내합니다.

요금제와 사용 범위

아래 가격과 한도는 2026년 10월 4일 요금제 페이지 기준입니다. Tailscale SSH는 모든 플랜에서 쓸 수 있습니다.

플랜별 가격과 한도

항목Personal무료Standard사용자당 월 8달러Premium사용자당 월 18달러
사용자최대 6명무제한무제한
사용자 기기무제한무제한무제한
ACL 그룹3개10개300개
Tailscale SSH제공제공고급 기능 포함
그 밖의 특징태그 리소스 50개조직의 계정과
기기 관리 연동
네트워크 흐름 로그
Enterprise는 별도 문의로 전용 지원과 계약 조건을 정합니다.

ACL 그룹은 접근 규칙에 한꺼번에 지정할 사용자 묶음이고, 태그 리소스는 개인 소유 대신 용도별 태그로 관리하는 기기입니다. 집 컴퓨터와 노트북을 혼자 연결하는 용도라면 Personal의 범위 안에 들어갑니다.

세션 녹화는 테일넷 안에 녹화를 맡을 컴퓨터를 따로 두고, 터미널의 입력과 출력을 재생할 수 있는 기록으로 저장하는 기능입니다. 기본 접속만으로는 녹화가 시작되지 않습니다. 감사 기록이 필요한 조직이라면 녹화 저장 위치와 접근 권한도 함께 정합니다. 브라우저에서 바로 접속하는 Tailscale SSH 콘솔은 관리 콘솔 기기 목록의 메뉴에서 열며, Owner, Admin, IT Admin, Network Admin 가운데 한 역할이 필요합니다.

자주 묻는 질문

테일스케일을 쓰면 공유기에서 포트 포워딩을 해야 하나요?

보통은 하지 않습니다. 테일스케일은 기기끼리 직접 연결을 시도하고, 어려우면 중계 연결을 씁니다. 회사나 공공 네트워크가 필요한 통신 자체를 막는 경우에는 그 네트워크 관리자에게 정책을 물어봅니다.

테일스케일 SSH를 켜면 기존 SSH 설정이 지워지나요?

지워지지 않습니다. 공식 문서에 따르면 /etc/ssh/sshd_config와 ~/.ssh/authorized_keys를 수정하지 않고, 테일넷을 거치지 않는 기존 SSH 접속도 그대로 동작합니다.

윈도우 컴퓨터에 테일스케일 SSH로 접속할 수 있나요?

윈도우를 호스트로 둘 수는 없습니다. Tailscale SSH의 서버 기능은 리눅스와 macOS 오픈소스 CLI 버전에서만 동작합니다. 윈도우에서 다른 호스트로 접속하는 것은 됩니다.

테일스케일이 내 SSH 세션 내용을 볼 수 있나요?

통신은 기기 사이에서 WireGuard로 종단간 암호화되고, 조정 서버는 공개 키와 접속 경로만 나눠 줍니다. 브라우저에서 쓰는 Tailscale SSH 콘솔도 종단간 암호화되며, 공식 문서는 테일스케일이 세션 트래픽을 읽지 못한다고 설명합니다.

무료 플랜에서도 테일스케일 SSH를 쓸 수 있나요?

무료 플랜인 Personal에서도 쓸 수 있습니다. 공식 문서는 Tailscale SSH를 모든 플랜에서 제공한다고 적고 있고, 요금제 페이지의 Personal 플랜 설명에도 SSH 기능이 들어 있습니다.

참고 자료

3줄 요약

  1. 테일스케일은 기기들을 테일넷이라는 사설 네트워크로 묶는 VPN 도구이고 Tailscale SSH는 그 안에서 SSH 인증과 권한을 테일스케일 신원과 정책으로 관리하는 별도 기능입니다.

  2. 호스트에서 tailscale set --ssh를 실행하면 테일넷에서 들어오는 22번 포트 접속을 테일스케일이 맡고, 정책에서 네트워크 접근과 SSH 접근이 모두 허용돼야 접속됩니다.

  3. Tailscale SSH 서버는 리눅스와 macOS 오픈소스 CLI에서만 동작하므로 맥 앱이나 윈도우 호스트는 기존 SSH 서버에 테일스케일 주소로 접속하는 방식을 씁니다.

Share

제대로 이해했는지 한 문제로 확인해 볼까요?

답을 고르면 바로 풀이가 나와요.

테일스케일 SSH를 사용 설정한 호스트에서 기존 SSH 설정 파일은 어떻게 될까요?

이 글이 도움이 되었나요?

이 글 다음 배우기바이브코딩 기초지식입문 코스 · 8편

AI에게 맡기기 전에 알아야 할 터미널, Git, 배포 기초입니다

  1. 1터미널과 CLI 뜻: 셸, GUI와의 차이와 처음 쓰는 명령
  2. 2환경 변수와 .env (Environment Variables)
  3. 3Git (버전 관리, Version Control)
코스 전체 보기 →
이어서 읽기 좋은 글클로드 울트라(Claude Ultra) 요금제: 맥스 20x에서 바뀐 점 →

앤트로픽이 2026년 10월 30일 Max 5x를 Max로, Max 20x를 Ultra로 이름을 바꿨습니다. 가격은 그대로이고 인증된 Ultra 계정은 5시간 한도가 없어졌지만 주간 한도는 남습니다. 바뀐 한도와 인증 확인 방법, Max와 Ultra를 고르는 기준을 정리합니다.