📝 한줄 요약
Tailscale에서 휴대폰이 보이고 핑이 된다는 사실만으로는 파일이나 명령에 접근할 수 없다. 실제 작업에서는 Android 휴대폰에 Termux OpenSSH를 열고 새 ED25519 공개키를 등록한 뒤, 해당 key file을 -i로 지정하고 클라이언트가 비밀번호로 fallback하지 않는 조건에서 공개키 인증과 공유 저장소 접근을 확인했다. 다만 당시 명령에는 IdentitiesOnly=yes와 IdentityAgent=none이 없어 서버가 받아들인 identity가 지정한 key 하나뿐이었다고 입증할 수는 없다. 서버의 비밀번호 인증 설정도 확인하지 않았으므로 공개키 전용 서버라고 부르지 않는다. 당시 기록에는 SSH가 제시한 host key를 캡처한 사실은 있지만, 휴대폰에서 직접 읽은 fingerprint와 신뢰 채널로 대조했다는 증거는 없어 과거 host identity verification을 NOT_EVIDENCED로 남긴다. 재현 절차에서는 fingerprint 대조·known_hosts 등록과 클라이언트 identity isolation을 로그인보다 앞에 둔다. 2026년 8월 10일 재확인에서는 휴대폰이 오프라인이고 해당 노드 키가 만료된 상태였다. 과거의 성공과 현재의 접속 가능성을 같은 말로 묶지 않은 이유다.
바쁘시면 이것만 읽어도 됩니다.
Tailscale은 사설 네트워크 경로를 만든다. 실제 접근에는 휴대폰에서 듣고 있는 SSH 같은 서비스가 필요하다.
Termux OpenSSH의 일반적인 포트는
8022다. 일반 서버처럼22만 확인하면 준비된 서비스를 놓칠 수 있다.ssh-keyscan은 경로에서 제시된 key를 수집할 뿐 휴대폰의 신원을 증명하거나known_hosts에 자동 등록하지 않는다.최초 접촉에서는 휴대폰 로컬 fingerprint와 controller scan에서 나온 모든 fingerprint를 신뢰 채널로 대조한 뒤, 전부 일치한 key만 명시적으로 등록해야 한다.
후속 검증은 새 ED25519 key file을
-i로 지정하고 클라이언트의 비밀번호 fallback을 차단한 조건에서 성공했다. 당시 지정 key만 유일한 후보였다는 증거는 없고 서버 측 password authentication 비활성화도 검증 범위가 아니다.안전한 재현 순서는
tailnet 등록 → ping → 포트·banner → host-key fingerprint 대조·등록 → 클라이언트 identity isolation → 공개키 인증 → 접근 범위다.확인된 범위는 Termux 앱 영역과 사용자가 허용한 공유 저장소다. root, 다른 앱의 비공개 데이터, 화면 제어는 포함하지 않는다.
DERP 중계는 실패가 아니다. 직접 연결보다 느릴 수 있지만 이번 연결은 DERP 경유로 작동했다.
Android 배터리 관리와 Tailscale 노드 키 만료 때문에 한 번 성공한 구성이 영구히 온라 인인 것은 아니다.
공개 글에는 실제 IP, 사용자명, 키 본문·지문, 계정, 비밀번호로 보이는 문자열을 넣지 않았다.
🎯 이런 분들께 도움됩니다
본인이 소유한 Android 휴대폰의 사진·다운로드 파일을 외부에서 안전하게 확인하고 싶은 사람
같은 Wi-Fi가 아니어도 휴대폰의 Termux 명령을 실행하고 싶은 사람
Tailscale에서 기기가 보이는데 SSH는 되지 않는 이유를 구분하고 싶은 사람
비밀번호를 채팅에 올리지 않고 에이전트나 자동화 도구에 최소 권한 접근을 주려는 운영자
“접속 성공”을 네트워크, 서비스, 인증, 파일 범위로 나눠 검증하려는 사람
😫 문제 상황: 휴대폰은 보였지만 들어갈 문이 없었다
시작 질문은 짧았다.
내 휴대폰이 Tailscale로 연결되어 있는데 혹시 접속이 가능해?
처음 확인했을 때 휴대폰은 tailnet에 등록되어 있었지만 오프라인이었다. 사용자가 휴대폰에서 Tailscale을 켠 뒤에는 세 번의 핑이 모두 성공했다. 응답은 95~108ms였고 도쿄 DERP 중계를 탔다.
여기서 성급하게 “휴대폰에 접속됐다”고 말하면 안 된다. 당시 SSH용 8022를 포함한 예상 서비스 포트는 닫혀 있었다. 네트워크 길은 생겼지만, 휴대폰 안에서 요청을 받을 프로그램이 없었다.
그림 1. 2026년 7월 26일 실제 실행 결과에서 파생한 카드다. UI 캡처가 아니며 IP·계정·호스트 키는 제거했다. 첫 상태는 ping 3/3 성공과 TCP/8022 닫힘, Termux OpenSSH 시작 뒤 상태는 TCP/8022 열림과 OpenSSH 10.4 banner 확인을 뜻한다.
이 장면에서 가장 중요한 교훈이 나왔다.
Tailscale 온라인 ≠ SSH 준비 완료
🌱 첫 번째 전환점: Tailscale SSH가 아니라 SSH over Tailscale
이번 구성은 Tailscale의 사설 주소 위로 Termux OpenSSH를 연결한 방식이다. 즉, Tailscale SSH 기능 자체를 Android에 켠 것이 아니라, Termux가 제공하는 일반 SSH 서버를 Tailscale 네트워크로 이용했다.
구조는 다음과 같다.
Mac의 SSH client
→ Tailscale 사설 네트워크
→ Android의 Tailscale app
→ Termux OpenSSH (TCP 8022)
→ Termux sandbox와 허용된 shared storage