테일스케일 SSH 설정 방법: 키 배포, 접근 제어, 지원 환경 정리
테일스케일은 여러 기기를 하나의 사설 네트워크로 묶는 VPN 도구이고, 테일스케일 SSH는 그 위에서 SSH 접속의 인증과 권한을 대신 관리하는 기능입니다. 설정 순서와 접근 제어 정책, 도입 전에 확인할 제한 사항을 공식 문서 기준으로 정리합니다.

테일스케일(Tailscale)은 여러 기기를 하나의 사설 네트워크로 묶어 주는 VPN 도구입니다. 테일스케일 SSH는 그 네트워크 안에서 SSH 접속의 인증과 권한을 테일스케일이 대신 관리하는 기능입니다. 공개 키를 서버마다 옮겨 두지 않아도 되고, 공유기에서 22번 포트를 밖으로 열어 두지 않아도 원격 접속이 열립니다.
집에 둔 컴퓨터에 AI 코딩 에이전트를 띄워 놓고 밖에서 노트북으로 붙는 작업 방식이 퍼지면서, 원격 접속 설정을 어디까지 해야 하는지 묻는 경우가 늘었습니다. 이 글은 테일스케일과 SSH가 각각 무엇이고 둘을 붙이면 무엇이 달라지는지, 설정 순서와 제한 사항까지 공식 문서를 근거로 정리합니다.

위 이미지는 테일스케일 공식 블로그에 실린 실제 화면입니다. 왼쪽은 관리 콘솔의 기기 목록이고 초록색 SSH 표시가 붙은 기기가 접속 대상입니다. 오른쪽은 터미널 프로그램을 따로 열지 않고 브라우저 창 안에서 라즈베리파이에 붙은 SSH 세션입니다.
SSH 원격 접속에서 손이 많이 가던 세 가지
SSH(Secure Shell)라는 이름은 일반 사용자에게는 원격 데스크톱보다 상대적으로 낯설 수 있습니다. 쉽게 말하면 내 컴퓨터의 터미널에서 멀리 있는 다른 컴퓨터에 접속해 명령을 내리는 표준 방식입니다. 접속해 있는 동안에는 그쪽 컴퓨터의 터미널을 내 화면에서 그대로 씁니다.
접속 자체는 명령 한 줄이지만, 그 전에 준비할 일이 세 가지 있습니다.
- 키 배포: 전통적인 SSH는 접속하는 쪽에서 키 한 쌍을 만들고, 공개 키를 접속 대상 컴퓨터의
~/.ssh/authorized_keys파일에 넣어 둡니다. 서버가 늘어나면 이 파일을 서버 수만큼 관리하게 됩니다. - 주소와 포트: 집이나 사무실 안쪽에 있는 컴퓨터는 밖에서 바로 보이지 않습니다. 공인 IP를 확인하고 공유기에서 포트 포워딩을 잡는 절차가 따라붙고, 인터넷 회선의 IP가 바뀌면 그때마다 다시 확인하게 됩니다.
- 권한 회수: 함께 쓰던 사람이 빠지면 그 사람의 공개 키를 서버마다 찾아 지워야 합니다. 서버 목록이 정확하지 않으면 지워지지 않고 남는 키가 생길 수 있습니다.
테일스케일 SSH는 이 세 가지를 네트워크 계층과 중앙 정책 파일 쪽으로 옮깁니다.
테일스케일의 구조: 조정 서버와 기기 사이 직접 연결

테일스케일은 WireGuard를 바탕으로 동작합니다. 각 기기에 클라이언트를 설치하고 같은 계정으로 로그인하면 그 기기들이 테일넷(tailnet)이라는 사설 네트워크 하나에 들어갑니다. 위 다이어그램처럼 모든 클라이언트는 테일스케일의 조정 서버(coordination server)에 먼저 연결됩니다.
조정 서버는 공개 키와 접속 경로를 나눠 주는 데까지만 관여합니다. 실제 데이터는 기기끼리 직접 오가고 종단간 암호화됩니다. 공식 문서는 테일스케일이 노드 키로 연결을 인증하고 WireGuard로 암호화한다고 설명합니다.
각 기기에는 100.으로 시작하는 테일스케일 전용 IP가 붙고, 매직DNS(MagicDNS)를 켜면 기기 이름만으로 서로를 부르게 됩니다. IP를 외우지 않고 ssh hong@mac-mini처럼 이름을 쓰는 방식입니다.
테일스케일 SSH가 일반 SSH와 다른 지점
테일스케일 SSH를 켜면 테일넷에서 들어오는 트래픽에 한해 22번 포트를 테일스케일이 가져갑니다. 공식 문서는 이 동작을 "Tailscale takes over port 22 for SSH connections incoming from the Tailscale network"로 적고 있습니다. 이때 요청은 원래 쓰던 SSH 서버가 아니라 테일스케일이 띄운 SSH 서버로 넘어갑니다.
인증 단계도 달라집니다. 테일스케일 SSH 서버는 WireGuard 수준에서 상대가 누구인지 이미 확인한 상태라, SSH 프로토콜의 인증 방식으로 none을 쓰고 추가 증명을 요구하지 않습니다. 암호화는 SSH 자체 암호화에 더해 WireGuard 암호화가 함께 적용됩니다.
기존 설정 파일은 건드리지 않습니다. /etc/ssh/sshd_config와 ~/.ssh/authorized_keys를 그대로 두므로, 테일넷을 거치지 않는 기존 SSH 접속은 계속 동작합니다.
| 항목 | 일반 SSH | 테일스케일 SSH |
|---|---|---|
| 인증 근거 | 공개 키 파일 | 테일스케일 신원과 노드 키 |
| 키 배포 | 서버마다 직접 | 조정 서버가 자동 배포 |
| 접근 제어 | 서버별 설정 | 테일넷 정책 파일에서 중앙 관리 |
| 사용 포트 | 자유롭게 지정 | 22번 고정 |
| 세션 녹화 | 미지원 | 지원 |
| macOS를 접속 대상으로 쓸 때 | 기본 지원 | 오픈소스 tailscale, tailscaled CLI 필요 |
설정 순서와 첫 접속
접속 대상이 되는 컴퓨터를 호스트, 접속하는 쪽을 클라이언트라고 부르겠습니다. 순서는 네 단계입니다.
1. 양쪽에 테일스케일을 설치하고 같은 계정으로 로그인합니다. 로그인은 구글이나 마이크로소프트 계정 같은 SSO 사업자를 거칩니다. 로그인을 마치면 관리 콘솔의 기기 목록에 두 기기가 나타납니다.
2. 호스트에서 테일스케일 SSH를 켭니다.
tailscale set --ssh이 명령은 호스트 키 한 쌍을 만들고 공개 키를 조정 서버에 올린 뒤, 테일넷에서 22번 포트로 들어오는 트래픽을 tailscaled가 가로채도록 설정합니다. 이 과정이 곧 다른 기기에 "이 호스트의 SSH는 테일스케일이 맡는다"고 알리는 절차입니다. 호스트당 한 번만 실행하면 됩니다. 다만 실행하는 순간 그 호스트의 테일스케일 IP로 붙어 있던 기존 SSH 세션은 멈춥니다.
3. 접근 제어 정책을 확인합니다. 정책을 손대지 않은 새 테일넷이라면 기본 정책이 이미 들어 있어서 따로 할 일이 없습니다. 기본 정책의 SSH 항목은 이렇게 되어 있습니다.
"ssh": [
{
"action": "check",
"src": ["autogroup:member"],
"dst": ["autogroup:self"],
"users": ["autogroup:nonroot", "root"]
}
]자기 계정에 묶인 기기에 자기가 붙는 경우만 허용하고, 붙을 때 신원 확인을 한 번 요구하는 설정입니다.
4. 평소 쓰던 대로 접속합니다.
ssh hong@mac-mini새로 설치할 프로그램도, 따로 만들 설정 파일도 없습니다. 테일스케일이 클라이언트의 known_hosts 파일을 접속 시점에 알아서 채우기 때문입니다. SCP와 SFTP도 그대로 동작합니다.
실무 예시. 집에 둔 맥미니에서 AI 코딩 에이전트를 돌려 놓고 밖에서 노트북으로 이어 작업하는 경우라면, 맥미니에서 tailscale set --ssh를 한 번 실행해 두고 노트북에서 ssh hong@mac-mini로 붙으면 됩니다. 공유기 설정 화면을 열 일도, 공인 IP가 바뀌었는지 확인할 일도 없습니다. 여기에 tmux 같은 터미널 도구를 함께 쓰면 접속이 끊겨도 실행 중이던 작업은 맥미니에서 계속 진행됩니다. 다만 macOS를 호스트로 쓰려면 앱스토어 버전이 아니라 오픈소스 tailscale, tailscaled CLI 버전을 설치해야 합니다.
접근 제어 정책으로 권한을 다루는 방식

위 다이어그램은 테일스케일 공식 문서의 접근 제어 설명 그림입니다. 조정 서버가 각 기기에 정책을 내려보내고, 정책에서 막힌 연결은 기기 단에서 차단됩니다.
테일넷 정책 파일에는 누가 어떤 기기에 어떤 계정으로 붙을 수 있는지 적습니다. SSH 규칙 하나는 이렇게 생겼습니다.
{
"action": "check",
"src": ["group:sre"],
"dst": ["tag:prod"],
"users": ["root"],
"checkPeriod": "20h"
}action:accept는 테일넷에 이미 로그인한 사용자를 그대로 받아들입니다.check는 접속 전에 신원 공급자로 다시 로그인하도록 요구합니다.src: 접속을 시작하는 쪽입니다. 사용자, 그룹, 태그를 적으며 별표 하나만 쓰는 방식은 허용되지 않습니다.dst: 접속 대상입니다. 일반 ACL과 달리 포트는 적을 수 없고 22번으로 고정됩니다.users: 호스트에서 쓸 계정 이름입니다. 호스트에 이미 있는 계정만 쓰며 새 계정을 만들지는 않습니다.checkPeriod:check일 때 다시 로그인을 요구하기까지의 간격입니다. 적지 않으면 12시간이고, 최소 1분에서 최대 168시간까지 지정합니다.always로 두면 접속할 때마다 확인합니다.acceptEnv: 클라이언트가 호스트로 넘길 수 있는 환경 변수 이름 목록입니다. 호스트가 v1.76.0 이상이어야 합니다.
규칙은 제한이 강한 쪽부터 평가됩니다. 같은 연결에 check 규칙과 accept 규칙이 함께 걸리면 check가 적용됩니다.
함께 쓰던 사람이 빠질 때는 서버를 돌며 키를 지우지 않고 정책 파일만 고칩니다. 공식 문서는 정책을 저장하면 클라이언트가 몇 초 안에 새 규칙을 따르며, 그 사용자가 이미 열어 둔 SSH 세션도 끊긴다고 설명합니다.
도입 전에 확인할 제한 사항
- 접속 대상이 될 수 있는 운영체제: 리눅스와 macOS 오픈소스 CLI 버전에서만 테일스케일 SSH 서버가 동작합니다. 시놀로지와 QNAP에서는 실행되지 않습니다. 접속을 시작하는 쪽은 테일스케일이 돌아가는 기기라면 어떤 운영체제든 상관없습니다.
- 포트 고정: 22번 포트를 쓴다고 가정하며, 다른 포트로 바꾸는 방법은 제공되지 않습니다.
- 데몬 재시작: 업그레이드처럼
tailscaled가 다시 시작되는 상황에서는 열려 있던 테일스케일 SSH 세션이 종료됩니다. - 테일넷 밖 기기: 서브넷 라우터 뒤에 있지만 테일스케일이 설치되지 않은 기기에는 테일스케일 SSH로 붙지 못합니다.
- 클라이언트 쪽 계정 구분 없음: 전통적인 SSH는 키 파일을 읽을 수 있는 OS 계정만 접속할 수 있었지만, 테일스케일 SSH는 키 파일을 쓰지 않으므로 그 기기에 로그인한 OS 계정이 무엇이든 접속이 가능합니다. 여러 사람이 한 컴퓨터를 계정을 나눠 쓰는 환경에는 맞지 않는 방식입니다. 공식 문서는 이런 경우
checkPeriod를always로 두는 완화책을 제시합니다. - 버전 요건: 서버 쪽 구성 요소는 테일스케일 v1.24 이상이 필요합니다.
위 제한 사항 가운데 걸리는 항목이 있다면, 테일스케일을 네트워크 계층으로만 쓰고 그 위에서 기존 SSH 서버와 클라이언트를 그대로 쓰는 선택지가 남아 있습니다. 서버를 인터넷에 직접 노출하지 않으면서 익숙한 SSH 방식을 유지하는 구성이고, 공식 문서도 이 방법을 대안으로 안내합니다.
요금제와 사용 범위 (2026년 8월 기준)
| 플랜 | 가격 | 사용자 | 기기 | 특징 |
|---|---|---|---|---|
| Personal | 무료 | 최대 6명 | 무제한 | ACL 그룹 3개, 태그 리소스 50개, SSH 기능 사용 가능 |
| Standard | 사용자당 월 8달러 | 무제한 | 무제한 | SCIM 배포, MDM 연동, ACL 그룹 10개 |
| Premium | 사용자당 월 18달러 | 무제한 | 무제한 | ACL 그룹 300개, 고급 테일스케일 SSH, 네트워크 흐름 로그 |
| Enterprise | 별도 문의 | 협의 | 협의 | 전용 지원과 계약 조건 |
공식 문서는 테일스케일 SSH를 모든 플랜에서 쓸 수 있다고 밝히고 있습니다. 개인이 집 컴퓨터와 노트북, 서버 몇 대를 묶는 정도라면 무료 플랜 범위 안에서 해결됩니다.
감사 기록이 필요한 조직이라면 세션 녹화를 함께 봅니다. 테일넷 안에 레코더 노드를 따로 두고 SSH 세션을 asciinema 형식으로 기록하는 기능이며, S3나 MinIO 같은 S3 호환 저장소로 내보내도록 설정합니다. 브라우저에서 바로 붙는 테일스케일 SSH 콘솔은 관리 콘솔 기기 목록의 메뉴에서 열고, Owner나 Admin, IT Admin, Network Admin 역할이 필요합니다.
자주 묻는 질문 (AEO)
Q. 테일스케일을 쓰면 공유기에서 포트 포워딩을 해야 하나요?
A. 하지 않아도 됩니다. 테일스케일 클라이언트가 바깥으로 연결을 만들어 조정 서버에 붙는 방식이라, 공유기에서 안쪽으로 포트를 열어 두지 않아도 기기끼리 연결됩니다.
Q. 테일스케일 SSH를 켜면 기존 SSH 설정이 지워지나요?
A. 지워지지 않습니다. 공식 문서는
/etc/ssh/sshd_config와~/.ssh/authorized_keys를 수정하지 않는다고 밝히고 있습니다. 테일넷을 거치지 않는 기존 SSH 접속은 그대로 동작합니다.
Q. 윈도우 컴퓨터에 테일스케일 SSH로 붙을 수 있나요?
A. 붙지 못합니다. 테일스케일 SSH의 서버 기능은 리눅스와 macOS 오픈소스 CLI 버전에서만 제공됩니다. 접속을 시작하는 쪽이 윈도우인 것은 문제가 되지 않습니다.
Q. 테일스케일이 내 SSH 세션 내용을 볼 수 있나요?
A. 통신은 기기 사이에서 WireGuard로 종단간 암호화됩니다. 조정 서버는 공개 키와 접속 경로를 나눠 주는 역할을 맡습니다. 브라우저에서 쓰는 테일스케일 SSH 콘솔도 종단간 암호화되며, 공식 문서는 테일스케일이 세션 트래픽을 읽지 못한다고 밝히고 있습니다.
Q. 무료 플랜에서도 테일스케일 SSH를 쓸 수 있나요?
A. 무료 플랜인 Personal에서도 씁니다. 공식 문서는 테일스케일 SSH가 모든 플랜에서 제공된다고 적고 있고, 요금제 페이지의 Personal 플랜 설명에도 SSH 기능이 들어가 있습니다.
3줄 요약:
- 테일스케일은 여러 기기를 하나의 사설 네트워크로 묶는 VPN 도구이고, 테일스케일 SSH는 그 위에서 SSH 인증과 권한을 테일스케일이 대신 관리하는 기능입니다.
- 호스트에서
tailscale set --ssh를 한 번 실행하고 기본 접근 제어 정책만 확인하면, 키를 옮기거나 포트를 여는 절차 없이ssh 사용자@기기이름으로 붙습니다. - 서버 기능은 리눅스와 macOS 오픈소스 CLI 버전에서만 동작하고 포트는 22번으로 고정되므로, 조건이 맞지 않으면 테일스케일 위에서 기존 SSH를 쓰는 구성이 대안입니다.
Sources
이 글이 도움이 되셨다면 공유해 주세요
메신저로 바로 보내거나 링크를 복사할 수 있습니다.
디지털마케터 뉴스레터
GA4, SEO, AI 마케팅 실무 인사이트를 월 1~2회 이메일로 보내드립니다.
다음으로 읽어볼 글

코딩 에이전트를 데스크톱과 모바일에서 함께 다루는 Paseo의 구조와 설치 방법, 그리고 Orca와 겹치는 부분과 다른 부분을 정리했습니다.
2026. 8. 7.
클로드 코드 상태 표시줄에 작업 진행률과 남은 시간을 띄우는 플러그인을 만들고, 실제 세션 127개로 정확도를 검증한 과정을 정리했습니다.
2026. 8. 7.
Muse Code는 메타가 2026년 8월 5일 베타로 공개한 터미널 기반 AI 코딩 에이전트입니다. 상주형 백그라운드 에이전트, 병렬 하위 에이전트, 이벤트 로그 복구 같은 핵심 기능과 Muse Spark 1.2 벤치마크, 요금 구조를 클로드 코드와 나란히 놓고 정리했습니다.
2026. 8. 6.
Solar Open 2는 업스테이지가 2026년 7월 22일 가중치까지 공개한 250B 규모의 오픈웨이트 언어 모델입니다. 공식 벤치마크에서 이긴 항목과 뒤진 항목, 클로드 코드에 연결하는 공식 방법, 8월 6일 공개된 상용 모델 Solar Pro 4와의 역할 차이를 정리했습니다.
2026. 8. 6.테일스케일 SSH를 켠 호스트에서 기존 SSH 설정 파일은 어떻게 될까요?
