Jump Desktop과 Tailscale로 만든 Mac mini 원격 안전망
외부에서 Mac mini에 접속해야 하는데, 평소 쓰던 Jump Desktop 연결이 되지 않는 상황이 있었다. Mac mini는 켜져 있었고 인터넷도 연결되어 있었다. Jump Desktop Connect 프로세스도 실행 중이었다. 겉으로는 “다 켜져 있는데 왜 안 되지?”에 가까운 상황이었다.
그런데 같은 와이파이를 쓰고있지 않으면 원격 조정이 안되는게 당연한 것이라는 거다. 그래서 Jump Desktop(원격 툴) 하나만 믿지 않고, Mac mini와 Windows를 외부에서도 안정적으로 확인하고 접근할 수 있는 원격 접속 안전망을 만들기 위해 Tailscale 을 적용하였다.
Jump Desktop: 평소 화면을 직접 조작하는 정문
Tailscale: 다른 와이파이·다른 IP에서도 내 장비끼리 이어주는 비상 통로
SSH: 비상 통로 끝에서 명령을 실행할 수 있게 해주는 보안 자동문
진행 방법
처음에는 Mac mini의 로컬 IP가 확인되어 있었다.
그러나 192.168.x.x 형태의 주소는 집 안 와이파이 같은 내부 네트워크에서만 의미가 있다. 다른 와이파이나 LTE, 외부망에서는 이 주소로 바로 접속할 수 없다.
그래서 먼저 아래처럼 접속 경로를 구분했다.
구분
역할
한계
로컬 IP
같은 와이파이 안에서 장비 확인
외부망에서는 직접 접속 불가
Jump Desktop
외부에서 화면 조작
macOS 권한이나 계정 상태에 막힐 수 있음
Tailscale
장비 사이 비상 네트워크 통로
실제 화면 조작이나 명령 실행용 “문”은 따로 필요
SSH
통로 끝의 보안 자동문
키·계정·권한 설정이 맞아야 접속 가능
Jump Desktop 점검 순서
Jump Desktop 연결 문제의 유력한 원인은 macOS 개인정보 보호 권한이었다.
macOS 업데이트, 앱 재설치, 권한 DB 변화가 생기면 기존에 잘 되던 원격 제어도 갑자기 막힐 수 있다. 그래서 집에 돌아가서 바깥에서도 접근할 수 있도록 Tailscale 을 추가했다.
Tailscale을 추가한 방법
Jump Desktop이 평소 접속용 정문이라면, Tailscale은 비상 통로다. Tailscale을 Mac mini와 Windows에 설치하고 같은 계정으로 로그인하면, 두 장비가 같은 사설망 안에 있는 것처럼 서로를 볼 수 있다.
< Tailscale 설치 내용>
Mac mini
Tailscale 설치 파일 실행
관리자 암호 입력
Tailscale 실행
같은 계정으로 로그인
Mac mini가 Tailscale 장치 목록에 뜨는지 확인
Windows
Tailscale 설치
같은 계정으로 로그인
Mac mini가 보이는지 확인
Windows에서 Mac mini의 Tailscale 주소로 접속 테스트
외부망 테스트
휴대폰 LTE/5G 또는 다른 와이파이 사용
Tailscale 연결 상태 확인
Mac mini가 온라인인지 확인
Jump Desktop 경로와 Tailscale 경로를 각각 테스트
Tailscale만 설치한다고 해서 Windows나 Mac mini 안에서 자동으로 작업할 수 있는 것은 아니다. SSH, RDP, Jump Desktop, 화면 공유, 별도 실행 환경처럼 실제 작업 진입점이 필요하다.
Tailscale과 SSH를 나눠서 이해하기
개념
비유
역할
Tailscale
두 집 사이의 전용 통로
멀리 떨어진 두 기기를 서로 찾게 해준다
SSH
전용 통로 끝의 보안 자동문
허가된 사람만 다른 컴퓨터의 터미널로 들어가게 해준다
SSH 공개키
자동문에 미리 등록해둔 출입 카드 정보
“이 카드 주인은 들여보내도 된다”고 문 앞 명단에 올려둔다
SSH 개 인키
내가 가진 실물 출입 카드
내 컴퓨터에만 보관하고, 남에게 보내지 않는다
Windows에 SSH 문을 여는 흐름
Windows 쪽에서는 OpenSSH Server를 켜고, Tailscale 위에서 SSH로 들어갈 수 있게 설정한다.
1. OpenSSH 서버 추가
Windows 설정에서 아래 경로로 들어간다.
설정 → 시스템 → 선택적 기능 → 기능 보기 → OpenSSH 서버 추가
이미 설치되어 있으면 이 단계는 건너뛴다.
2. sshd 실행, 자동시작, 방화벽 확인
Windows 관리자 PowerShell에서 sshd를 켜고 자동시작으로 둔다.
Start-Service sshd
Set-Service -Name sshd -StartupType Automatic
Get-Service sshd,Tailscale | Select-Object Name,Status,StartType
정상 상태는 대략 이렇다.
Name Status StartType
---- ------ ---------
sshd Running Automatic
Tailscale Running Automatic
3. 영문 접속 계정과 공개키 등록
한글 Windows 계정명은 SSH 클라이언트에서 꼬일 수 있다. 그래서 원격 접속용 영문 계정을 따로 두는 방식이 더 단순했다.
또 관리자 계정으로 SSH 키 접속을 할 때는 사용자 홈의 authorized_keys보다 아래 파일을 확인하는 쪽이 중요했다.
C:\ProgramData\ssh\administrators_authorized_keys
이때 공개키는 Windows에 등록해도 되지만, 개인키는 내 컴퓨터에만 보관해야 한다. 개인키는 문서나 메신저에 올리지 않는다.
4. Mac에서 접속 별칭 만들기
Mac의 ~/.ssh/config에 별칭을 만들면 매번 긴 주소를 치지 않아도 된다.
Host my-windows
HostName windows-device-name
User remote-user
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
StrictHostKeyChecking accept-new
여기서 HostName은 숫자 IP보다 Tailscale 기기 이름을 쓰는 편이 편하다. IP가 바뀌어도 기기 이름으로 다시 찾아갈 수 있기 때문이다.
접속 테스트는 이렇게 한다.
ssh my-windows "hostname && whoami"
이 구조가 잡히면, 다음부터는 아래처럼 짧게 들어갈 수 있다.
ssh my-windows
코드 사용 여부
이번 글은 앱 설치와 원격 접속 구조 설명이 중심이지만, SSH 설정에는 실제 명령어가 들어간다.
Windows에서 서비스 상태를 확인할 때는 아래처럼 볼 수 있다.
Get-Service sshd,Tailscale | Select-Object Name,Status,StartType
Mac에서 Tailscale 너머의 Windows에 접속할 때는 아래처럼 테스트한다.
ssh my-windows "hostname && whoami"
배운 점
가장 크게 배운 점은 원격 작업 환경은 화면 공유 도구 하나만 믿으면 안 된다는 것이다.
Jump Desktop은 편하고 강력하지만, macOS 권한이나 계정 상태, 앱 실행 상태에 영향을 받는다. 연결이 끊겼을 때 원인을 외부에서 바로 알기 어렵다.
반면 Tailscale은 화면을 보여주는 도구가 아니라 장비끼리 이어주는 네트워크 통로다. 그래서 Jump Desktop을 대체한다기보다, Jump Desktop이 안 될 때 장비가 살아 있는지 확인할 수 있는 안전망에 가깝다.
SSH는 그 다음 단계다. Tailscale로 길을 열었다면, SSH는 그 길 끝에 설치하는 보안 자동문이다. 화면이 없어도 컴퓨터가 살아 있는지 확인하고, 필요한 명령을 실행할 수 있다.
ps. 그 외 시행착오
Windows 한글 계정명은 SSH에서 꼬일 수 있어 영문 계정이 단순했다.
관리자 계정으로 SSH 키 접속할 때는
C:\ProgramData\ssh\administrators_authorized_keys쪽을 확인해야 했다.Permission denied가 나오면 네트워크 문제가 아니라 사용자명, 공개키 등록 위치, 개인키 경로 문제일 가능성이 컸다.Windows가 꺼져 있거나 깊은 절전 상태면, Tailscale과 SSH가 설정되어 있어도 접속할 수 없다.