사용 가이드

이렇게 쓰세요, SharkTTY

앱이 할 수 있는 모든 것을 실제로 필요해지는 순서대로 정리했습니다. 첫 SSH 호스트를 추가하는 일에서 시작해, 집에 두고 온 Mac의 네 번째 디스플레이를 제어하는 데까지. iPhone·iPad용 SharkTTY와 Mac용 무료 동반 앱 SharkTTY Desk를 함께 다룹니다.

내 서버에 접속하는 데 계정은 필요 없습니다. 여기서 설명하는 모든 기능은 무료입니다.

1부

터미널

SharkTTY는 표준 sshd가 도는 장비라면 무엇에든 셸을 엽니다. VPS, NAS, Raspberry Pi, 워크스테이션 모두 마찬가지입니다. 일반 SSH는 상대편에 아무것도 설치할 필요가 없고, Mosh와 ET는 각자의 작은 서버 패키지가 필요하며 둘 다 선택 사항입니다.

첫 호스트 추가하기

설정을 열고 호스트 탭에서 오른쪽 위의 +를 누릅니다. 새 호스트에는 반드시 채워야 할 항목이 네 가지 있고, 처음에는 그냥 지나쳐도 되는 항목이 여럿 있습니다.

  • 표시 이름, 호스트 이름, 사용자. 표시 이름은 본인이 알아보기 위한 것이며, 비워 두면 주소가 대신 쓰입니다.
  • SSH 포트. 스테퍼를 누르는 대신 숫자를 직접 입력합니다. 서버가 다른 포트를 쓰지 않는다면 22로 두세요.
  • 인증 → 방식: 비밀번호, 키, 키보드 인터랙티브 / 2FA, 없음 중에서 고릅니다.
  • 연결 방식: SSH(직접) 또는 Mosh(가속). 나중에 다른 설정을 잃지 않고 바꿀 수 있습니다.

비밀번호에는 두 가지 방식이 있습니다. 비밀번호 저장은 이 기기의 iOS Keychain에 보관하며, 동기화를 켜면 iCloud Keychain을 통해 종단 간으로 다른 기기까지 따라옵니다. 우리 서버를 거치지 않습니다. 접속 시 입력은 아무것도 저장하지 않고 매번 묻습니다. 서버가 일회용 코드나 하드웨어 토큰처럼 자체 프롬프트를 보낸다면 키보드 인터랙티브 / 2FA를 고르세요. 접속할 때 프롬프트에 답하고, 아무것도 저장되지 않습니다.

호스트를 저장한 뒤 탭하면 연결됩니다. 호스트 목록에서 한 번 탭하면 선택, 두 번 탭하면 곧바로 연결입니다.

이미 설정 파일이 있다면

설정 → 호스트 → SSH 설정에서 가져오기는 붙여 넣은 ~/.ssh/config 또는 직접 고른 파일을 읽습니다. 호스트 별칭, 주소, 사용자 이름, 포트만 가져오며 비밀번호와 개인 키는 절대 가져오지 않습니다. ProxyCommand를 쓰는 항목은 건너뛰고, ProxyJump가 있는 항목은 직접 연결로 가져오므로 이후 직접 점프 호스트를 지정해야 합니다.

기기를 벗어나지 않는 SSH 키

키는 설정의 계정 탭에 있습니다. +를 누르면 세 가지 경로 중에서 고를 수 있습니다. 키 생성, 텍스트 붙여넣어 추가, 파일에서 가져오기입니다.

  • 생성하기: id_ed25519 같은 이름과 me@iPhone 같은 주석, 그리고 알고리즘을 지정합니다. Ed25519가 권장 기본값이고, ECDSA와 RSA는 오래된 서버를 위한 선택지이며, RSA 4096 생성은 휴대폰에서 몇 초가 걸립니다.
  • 기존 키를 붙여넣거나 가져오기: 개인 키가 암호화되어 있다면 추가할 때 암호 문구를 입력하세요. 이 값은 오직 대응하는 공개 키를 기기에서 유도하고 저장하는 데만 쓰입니다.
  • 서버에 등록하기: 키를 열어 공개 키 복사 또는 공개 키 공유를 사용한 뒤, 그 한 줄을 호스트의 ~/.ssh/authorized_keys에 추가하거나 서버 관리자에게 전달하세요.

개인 키는 iOS Keychain에 머뭅니다. 키마다 iCloud로 동기화를 켜면 iCloud Keychain을 통해 다른 기기로 전달됩니다. Apple이 비밀번호에 쓰는 것과 같은 종단 간 경로이며, 우리 서버가 아닙니다. SharkTTY 클라우드 계정으로 로그인하면 호스트, 스크립트, 드라이브 매핑, 템플릿이 동기화되고, 비밀번호와 개인 키와 암호 문구는 명시적으로 동기화되지 않습니다.

다시 호스트 편집기로 돌아와 인증 → 방식 → 키를 고르면 그 호스트에 쓸 키를 지정할 수 있습니다. 목록이 비어 있으면 편집기가 그 사실을 알려 주고 계정 탭으로 먼저 안내합니다.

첫 접속 시 지문, 그리고 지문이 바뀌었을 때

서버에 처음 접속하면 SharkTTY가 호스트 키를 가져와 SHA256 지문을 보여 주고 신뢰하고 연결 버튼을 띄웁니다. 서버 관리자가 공개한 지문이나 서버에서 ssh-keygen -lf가 출력하는 값과 대조하세요. 한 번 수락하면 그 값이 기록됩니다.

이후 그 키가 바뀌면 연결은 그대로 진행되지 않고 경고와 함께 멈춥니다. 솔직하게 말하면 가능성은 둘입니다. 서버를 다시 설치했거나 키를 교체했거나, 아니면 누군가 당신과 서버 사이에 끼어 있는 것입니다. 둘 중 어느 쪽인지 알 때만 새 키를 신뢰하고 재연결을 쓰세요.

직접 서버를 재구축한 뒤 의도적으로 다시 고정하려면, 호스트를 열고 기록된 호스트 키 지우기를 사용하세요. 다음 연결에서 새 지문을 처음부터 다시 확인하게 됩니다.

SSH, Mosh, ET

셋 다 대화형 셸을 열어 줍니다. 차이는 서버에 무엇이 필요한지, 그리고 발밑에서 네트워크가 바뀔 때 어떻게 되는지에 있습니다.

전송 방식 서버에 필요한 것 네트워크 변경을 견디는가 알아 둘 점
SSH(직접) sshd 외에는 없음 아니요 이미 ssh로 접속할 수 있는 호스트라면 그대로 동작합니다.
Mosh(가속) mosh-server 예, UDP로 Wi-Fi와 셀룰러를 오가며, 지연이 치솟을 때 입력을 로컬에서 먼저 표시합니다.
ET(실험적) etserver, 기본 포트 2022 예, TCP로 UDP를 아예 막는 네트워크를 위한 선택지입니다. 기본으로 꺼져 있으며 설정에서 먼저 켜야 합니다.

Mosh는 입력할 내용을 예측해 서버가 답하기 전에 화면이 반응하게 합니다. 설정 → 터미널 → 기본 예측 모드에는 링크가 느릴 때만 예측을 켜는 적응형과 함께 항상, 안 함이 있습니다. 적응형이 기본값이며 거의 모든 경우에 적절합니다.

ET는 아직 검증 중이라 설정에서 ET(Eternal Terminal) 전송을 켜기 전까지는 꺼져 있습니다. 켜면 호스트 편집기에 세 번째 연결 방식으로 나타납니다. 한 가지 미리 감안할 점이 있습니다. Mosh의 UDP와 마찬가지로 ET 데이터 연결은 기기에서 etserver 포트로 곧장 이어지며, 점프 호스트를 거쳐 전달되지 않습니다.

떠났던 세션으로 돌아오기

iOS는 앱이 화면에서 사라지고 얼마 지나지 않아 앱을 정지시킵니다. 그래서 어떤 모바일 터미널도 TCP 연결을 영원히 열어 둘 수는 없습니다. SharkTTY는 이를 두 겹으로 다룹니다.

  • 앱은 마지막으로 본 화면을 보관합니다. 끊어진 탭을 다시 열면 빈 사각형이 아니라 그 스냅샷과 재연결 버튼이 나타납니다.
  • Mosh와 ET는 서버 쪽에서 세션 자체를 살려 두므로, 다시 연결하면 떠났던 그 자리로 정확히 돌아갑니다. 명령 실행 도중이었다면 그 도중으로 돌아갑니다.

전송 방식과 무관하게 가장 믿을 만한 답은 서버의 멀티플렉서입니다. tmux new -A -s mobile 같은 접속 스크립트를 붙여 두면, 다시 연결할 때마다 새 셸을 여는 대신 같은 세션에 다시 붙습니다. 스크립트는 바로 다음에 다룹니다.

기다리는 시간을 크게 줄여 주는 작은 설정이 하나 더 있습니다. 설정에서 터미널 벨 시스템 알림을 켜세요. 터미널이 벨을 울렸는데 그 세션이 지금 보고 있는 세션이 아니면 iOS가 알림을 보냅니다. 오래 걸리는 명령 끝에 printf '\a'를 붙여 두면 작업이 끝났을 때 휴대폰이 알려 줍니다.

스크립트 — 접속과 함께 실행되는 조각들

SharkTTY에서 스크립트는 연결이 열린 직후 터미널에서 실행되는 셸 텍스트 덩어리입니다. 설정 → 스크립트에서 +를 누른 뒤, 빈 스크립트로 시작하거나 템플릿에서 새로 만들기를 고르세요.

템플릿 선택 화면은 사람들이 실제로 다시 접속하는 이유에 따라 묶여 있습니다.

  • 세션 유지 — tmux, screen, zellij. 각각 중복 생성 대신 다시 붙도록 작성되어 있습니다.
  • 시스템 상태 — 시스템 개요, 또는 리소스 모니터로서의 htop.
  • 로그 — 시스템 로그를 따라가거나, 파일 하나를 따라갑니다.
  • 컨테이너 — Docker 컨테이너, Compose 서비스, 컨테이너 로그.
  • 서비스 관리 — 서비스 상태 확인과 재시작.
  • 시스템 업데이트 — Debian/Ubuntu, RHEL/Fedora, Alpine, Arch용 템플릿이 따로 있습니다.
  • 백업 — rsync 증분 백업, 또는 직접 만든 백업 스크립트 실행.

호스트의 플랫폼을 지정하면 선택 화면이 그 장비에 맞는 템플릿만 보여 줍니다. Alpine 서버에 apt를 권하는 일이 없어집니다. 템플릿이 만들어 준 내용은 얼마든지 고칠 수 있고, 템플릿으로 저장을 쓰면 다음을 위해 내 버전을 남겨 둘 수 있습니다.

호스트 편집기에서 스크립트를 붙여 두면 연결할 때마다 실행됩니다. 아니면 호스트는 그대로 두고 접속할 때 고를 수도 있습니다. 호스트 목록에서 스크립트로 연결과 직접 연결은 별개의 동작이며, 스크립트를 두 번 탭하면 그 스크립트로 연결합니다.

입력하기: 키보드 보조 바와 플로팅 키보드

시스템 키보드 위에는 터미널에 필요하지만 iOS에는 없는 키를 모은 보조 바가 있습니다. Esc, Ctrl, Tab, 방향키와 함께 파일 업로드, 키보드 표시·숨김, 포인팅 기기 켜기 버튼이 놓여 있습니다.

설정 → 키보드 → 입력판에서 시스템 키보드와 SharkTTY 자체 화면 키보드인 플로팅 사이를 전환합니다. 플로팅 키보드는 좁은 띠가 아니라 온전한 키보드입니다. 기호, Tab, Return, ⌃⌥⌘ 보조키, fn 키와 F 열을 갖추고 있으며 두 줄에 걸친 L자 Return까지 실제 키보드처럼 배치되어 있습니다. 원하는 곳으로 끌어다 놓고 크기를 조절하며, 설정 팝오버의 투명도 슬라이더로 터미널 위에서 흐릿하게 만들 수 있습니다. 아래가 비쳐 보이는 게 싫다면 완전히 불투명하게 둘 수도 있습니다.

같은 설정의 배열에서 미국 영어, 영국 영어, 일본어(JIS), 프랑스어(AZERTY), 독일어(QWERTZ), 스페인어를 고를 수 있습니다. 키 위의 후보 표시줄은 입력하는 동안 그럴듯한 단어와 자주 쓰는 명령을 제안합니다. 상단 바의 마이크 버튼은 두 가지로 동작합니다. 탭하면 음성 보드로 전환되고, 길게 누르면 눌러서 말하기로 후보 표시줄에 곧장 입력됩니다.

마우스 리포트는 트랙패드 입력을 누가 받을지 정합니다. 켜면 연결된 트랙패드나 마우스의 클릭과 드래그가 그것을 이해하는 프로그램인 vim, tmux, htop, less로 전달됩니다. 끄면 포인터가 대신 텍스트를 선택합니다. 프로그램이 실제로 마우스 지원을 요청한 동안에만 차이가 생깁니다. iPad에서는 외장 키보드와 트랙패드가 전 구간에서 동작합니다.

음성 입력, 그리고 말을 명령으로 바꾸는 AI

마이크를 길게 누르고 말하세요. 인식은 기기에서 실행됩니다. 무료이고, 오프라인이며, 즉시 처리되고, 아무것도 밖으로 나가지 않습니다. 인식된 내용은 음성 보드에 편집 가능한 텍스트로 들어오고, 삽입을 누르면 터미널에 입력됩니다.

녹음은 구간 단위로 보관되므로, 전체를 다시 말하는 대신 한 구간만 잘라 내고 다시 인식할 수 있습니다. 히스토리는 지난 녹음을 보관해 다시 들어 보거나 한 번 더 인식할 수 있게 합니다. iPad에서는 음성 보드가 투명 키보드처럼 떠 있고 확대할 수 있습니다.

AI는 선택 사항이며 인식과는 완전히 별개입니다. 설정에서 자신의 키로 제공자를 추가하세요. OpenAI, Claude, Gemini, Kimi, GLM API 형식을 지원하며, 대화 모델과 함께 그 제공자에 있다면 전사 모델도 지정합니다. Claude는 대화 전용이라 오디오 API가 없으므로, 그쪽 녹음은 실패하는 대신 기기 내 인식으로 되돌아갑니다. 제공자 키는 이 기기의 Keychain에 머물며 동기화되지 않습니다.

제공자를 연결하면 프롬프트 모드가 말한 내용을 깔끔한 문장이나 바로 실행할 수 있는 명령으로 바꿔 주고, 터미널 문맥 첨부를 켜면 모델이 답하기 전에 화면에 무엇이 있는지 볼 수 있습니다. 대화 패널은 세션 옆에 대화를 두어, 브라우저 탭을 열지 않고도 질문할 수 있게 합니다.

API 키를 직접 관리하고 싶지 않다면, 로그인한 뒤 공식 클라우드 모델을 쓸 수 있습니다. 앱 내 구입으로 구매한 포인트로 비용을 치르며, 포인트는 여러 기기에서 공유됩니다. 어느 쪽을 고르든 기기 내 인식은 계속 무료입니다.

파일 옮기기

서버로 파일을 보내는 방법은 두 가지이고, 각각 어울리는 상황이 다릅니다.

  • 세션 안에서: 보조 바의 파일 업로드 버튼이 현재 작업 디렉터리로 파일을 곧장 보냅니다. 파일당 상한은 64 MB이며, 앱이 다시 사용할 수 있는 자격 증명이 호스트에 있어야 합니다. 일회용 코드로만 로그인하는 서버는 이 방법을 쓸 수 없습니다.
  • 호스트 목록에서: SFTP로 파일 탐색을 열면 그 서버의 파일 관리자가 뜹니다. 폴더 생성, 업로드, 다운로드가 가능하고 이름이 겹치면 덮어쓰기를 확인합니다.

설정의 파일 탭은 기기에서 접근할 수 있는 저장소를 드라이브로 매핑합니다. iCloud Drive, 공유 폴더, 앱 로컬 폴더, 또는 URL로 지정한 WebDAV 서버입니다. 한 번 매핑해 두면 같은 파일 관리자에서 탐색할 수 있어, 노트북을 거치지 않고도 NAS에서 서버로 파일을 옮길 수 있습니다.

한 화면에서 여러 세션

연결은 이름을 바꿀 수 있는 탭으로 열립니다. 모든 연결 타일링은 전부를 함께 보여 주고, 좌우 분할과 상하 분할은 둘을 나란히 놓으며, 이 연결에 집중은 하나를 다시 전체 크기로 되돌립니다. iPad에서는 배포를 지켜보는 것과 배포가 도는 동안 로그를 함께 지켜보는 것의 차이가 됩니다.

원격 데스크톱도 터미널과 같은 작업 공간에 들어오므로, Mac 세션 하나와 셸 셋이 한 그리드를 나눠 쓸 수 있습니다.

배스천을 거쳐 호스트에 닿기

호스트 편집기에서 점프 호스트(ProxyJump)를 지정하면 먼저 배스천에 접속한 뒤 그곳을 거쳐 실제 호스트에 닿습니다. 점프 호스트는 자체적으로 저장된 키나 비밀번호로 비대화식 인증을 하며, 키보드 인터랙티브 로그인이 필요한 배스천은 아직 지원하지 않습니다.

점프 호스트를 지나는 것은 SSH 연결뿐입니다. Mosh의 UDP와 ET의 데이터 연결은 기기에서 대상으로 곧장 이어지므로, 네트워크 바깥에서 둘 중 하나에 의존하기 전에 확인해 둘 만합니다.

2부

휴대폰 속의 Mac 데스크톱

SharkTTY의 나머지 절반은 Mac을 위한 완전한 원격 데스크톱입니다. Mac에 무료 동반 앱 SharkTTY Desk 하나만 있으면 되고, 포트 포워딩도 VPN도 공유기 설정도 전혀 필요 없습니다.

Mac에 SharkTTY Desk 설치하기

SharkTTY Desk는 무료이며 Apple Silicon Mac(M1 이상)의 macOS 14 Sonoma 이상에서 실행됩니다. Mac 앱 페이지에서 디스크 이미지를 내려받아 SharkTTY Desk를 응용 프로그램 폴더로 끌어다 놓고 실행하세요. Dock 아이콘은 없고 메뉴 막대에 자리 잡으며, 거기서 창을 열 수 있습니다.

처음 실행할 때 두 가지 권한이 필요합니다. 앱 패널이 시스템 설정 → 개인정보 보호 및 보안의 알맞은 항목으로 바로 연결해 줍니다.

  • 화면 기록 — 필수이며, 디스플레이를 캡처하는 권한입니다.
  • 손쉬운 사용 — 포인터를 움직이고 입력하는 데에만 쓰입니다. 제어 허용을 끄면 건너뛸 수 있고, 그러면 보기 전용 Mac이 됩니다.
연결, 제어 모드, 뷰어 승인을 보여 주는 macOS의 SharkTTY Desk 창

시작하기 전에 버전을 확인하세요. SharkTTY Desk 0.9.0은 iPhone이나 iPad에 SharkTTY 1.6 이상이 필요하고, 양방향 오디오는 1.7 이상이 필요합니다. 아직 앱을 업데이트할 수 없다면 이전 빌드인 SharkTTY Desk 0.5.0이 1.6 이전 앱과도 동작합니다.

Mac과 앱 페어링하기

iPhone이나 iPad의 SharkTTY에서 +를 누르고 원격 데스크톱 추가를 고릅니다. 채우는 방법은 세 가지입니다.

  • 양쪽에서 같은 SharkTTY 계정으로 로그인하면 Mac이 목록에 저절로 나타납니다.
  • Desk 패널의 페어링 QR 코드를 앱의 스캐너로 읽습니다.
  • Desk 패널의 deskpair 문자열을 복사해 붙여 넣습니다. 접근 토큰을 담고 있으며 Keychain에 저장됩니다.

알아보기 쉬운 이름을 붙인 뒤 저장하고 연결을 누르세요. Mac이 접속 전 승인을 요구하도록 설정되어 있다면, Mac 앞의 사람이 허용을 누를 때까지 앱이 기다립니다.

다른 사람이 링크로 Mac을 공유해 줄 수도 있습니다. 로그인하면 공유받은 데스크톱이 나와 공유됨에 나타납니다. 공유는 보기 전용으로 만들 수 있고, 만료될 수 있으며, 언제든 취소할 수 있고, 동시에 접속할 수 있는 인원을 제한하거나 특정 계정만 쓰도록 한정할 수 있습니다.

모든 디스플레이를 원하는 방식으로

모니터가 여러 대인 Mac은 전부를 보내옵니다. 화면 배치에서 좌우, 위아래, 4분할, PIP 중에서 배열을 고르고, 책상 위 실제 위치에 맞게 디스플레이 순서를 바꿀 수 있습니다. 각 디스플레이는 필요할 때 스트리밍되며, 모니터 세 대짜리 Mac을 휴대폰에서 쓸 수 있게 해 주는 것이 바로 이 방식입니다.

iPad에 4분할로 표시된 Mac 화면 네 개, 배열 선택기와 돋보기, xHD·HD·SD 화질 단계가 함께 보이는 모습

화면을 탭하면 그 화면의 제어권을 가져오고, 디스플레이를 바꾸면 입력과 포인터가 새 화면으로 다시 향합니다. 자세히 봐야 할 때는 집중으로 디스플레이 하나를 크게 키웁니다. 조정 모드에서는 화면을 끌어 위치를 옮기고 손가락을 오므려 확대할 수 있습니다.

터치, 가상 마우스, 돋보기

가장 빠른 방법은 직접 터치입니다. 손가락 하나를 움직이면 클릭 없이 포인터가 미끄러지고, 두 번째 손가락을 대면 그 자리에서 클릭됩니다. 두 손가락 탭은 오른쪽 클릭입니다.

정밀한 작업에는 왼쪽·가운데·오른쪽 버튼을 갖춘 가상 마우스가 있습니다. 길게 눌러 드래그를 고정할 수 있고, 스크롤을 위한 휠 제스처도 있습니다. 버튼들은 화면 아래쪽의 한 패널로 도킹할 수 있으며, 손이 놓인 위치에 맞춰 좌우로 미끄러지고 화면 키보드가 올라오면 그 위로 함께 올라섭니다.

돋보기는 손끝 아래 영역을 네이티브 해상도로 보여 줍니다. 휴대폰에서 환경설정 창의 체크박스를 정확히 누를 수 있는 이유가 이것입니다. 마우스 버튼을 도킹해 두면 화면 가장자리 쪽으로 밀려나지 않고 커서 바로 위에 자리 잡습니다. ⌘, ⌥, ⌃는 한 번만 적용되는 보조키로 동작합니다. 하나를 탭한 뒤 적용할 키를 탭하세요.

키보드와 macOS 단축키

모드 드롭다운이 달린 키보드 버튼 하나로 SharkTTY의 플로팅 키보드와 단축키 도구 막대가 딸린 시스템 키보드 사이를 오갑니다. 플로팅 키보드에는 macOS가 기대하지만 iOS가 제공하지 않는 보조키와 F 키가 들어 있습니다.

빠른 동작 메뉴는 입력하기 번거로운 단축키를 보냅니다. Spotlight 검색, Mission Control, 앱 창, 앱 전환, 왼쪽 타일, 오른쪽 타일, 채우기, 가운데 정렬, 최소화, 앱 가리기, 창 닫기, 앱 종료, 강제 종료, 영역 및 전체 화면 스크린샷, 화면 잠금까지. 클립보드는 양방향으로 동기화되므로 Mac에서 복사해 휴대폰에서 붙여 넣을 수 있습니다.

느린 연결에서의 화질

영상은 ScreenCaptureKit으로 캡처해 하드웨어로 인코딩한 H.264이며, 등급은 클라이언트가 고릅니다. xHD는 Mac의 네이티브 픽셀을 그대로 그리고, HD와 표준은 선명함을 대역폭과 맞바꾸며, 부드럽게는 무엇보다 프레임 속도를 앞세웁니다.

약한 링크에서 자동 낮춤을 켜 두면 네트워크가 나빠질 때 세션이 스스로 등급을 낮추고, 끊기는 대신 그 상태를 유지합니다. Mac과 같은 Wi-Fi에 있다면 대개 xHD로 충분합니다.

양쪽으로 흐르는 소리

원격 사운드는 Mac의 시스템 소리를 기기로 가져와, Mac에서 재생 중인 영상이나 통화를 손안에서 들을 수 있게 합니다. 마이크 입력은 반대 방향으로 흘러 iPhone이나 iPad를 Mac의 마이크로 만듭니다. 자리에 없는 동안 Mac에서 이뤄지는 통화, 녹음, 받아쓰기가 여기에 해당합니다.

양방향 모두 기기에 SharkTTY 1.7 이상이 필요합니다. 오디오 자체는 Opus로 전달됩니다.

화면이 없는 Mac, 또는 잠긴 Mac

아직 베타인 가상 디스플레이는 iPad 크기에 맞춘 추가 헤드리스 화면을 만듭니다. 모니터 없는 Mac mini를 위한 답이자, 두 번째 작업 공간을 들고 다니는 방법입니다.

Desk는 네트워크로 잠자는 Mac을 깨우고 연결된 동안 깨어 있게 유지할 수 있습니다. 허용하면 macOS 로그인 창을 띄워 재부팅 후에도 비밀번호를 입력해 원격으로 잠금을 해제할 수 있습니다.

연결이 실제로 이어지는 방식

양쪽 끝이 모두 바깥으로 연결을 시도하므로 공유기에서 열어야 할 포트가 없습니다. 다른 것은 둘이 만나는 경로입니다.

  • 같은 네트워크에서는 Mac과 기기가 QUIC로 직접 연결합니다. 지연이 가장 낮고, 사이에 아무것도 없습니다.
  • 네트워크가 다를 때는 세션이 중계를 거칩니다. 다른 것을 모두 막는 호텔이나 사무실 Wi-Fi를 위해 WebSocket-over-443 대체 경로도 있습니다.

세션은 종단 간 암호화되며 중계는 오직 암호문만 전달합니다. 로컬 네트워크에서는 여러 대의 iPhone과 iPad가 같은 Mac을 동시에 보고 제어할 수 있고, Mac은 새 뷰어마다 승인을 요구하거나 탭 한 번으로 누구든 내보낼 수 있습니다.

다른 사람의 서버를 거치고 싶지 않다면 중계는 오픈 소스입니다. 공개된 아무 서버에서나 desk-relay를 실행하세요. --bind에 넘긴 주소에서 QUIC를 받고 --wss-bind에서 WebSocket 대체 경로를 제공하며, 링크 생성은 직접 정한 shared secret으로 보호됩니다. SharkTTY Desk가 그 주소를 가리키게 하고 이어서 나타나는 중계 링크를 스캔하면, 트래픽이 지나가는 유일한 당사자는 당신입니다. SharkTTY 계정은 전혀 관여하지 않습니다.

팁과 문제 해결

뜻대로 되지 않을 때

Mosh가 mosh-server를 시작하지 못했다고 합니다

서버에 mosh가 설치되어 있지 않거나, 비대화식 SSH 로그인이 받는 PATH에 없는 경우입니다. mosh를 설치하거나, 설정 → 호스트에서 그 호스트의 mosh-server 절대 경로를 지정하세요. 대부분의 Linux에서는 /usr/bin/mosh-server, Apple Silicon Mac에서는 /opt/homebrew/bin/mosh-server입니다.

ET 등록에 실패했습니다

원격에 etterminal이 없거나, 비대화식 SSH 세션의 PATH에 없는 경우입니다. 그곳에 Eternal Terminal을 설치하고(apt install et, brew install et), etserver가 실행 중인지와 포트(바꾸지 않았다면 2022)가 방화벽에 막히지 않았는지 확인한 뒤 다시 시도하세요. 그동안 SSH와 Mosh는 그대로 동작합니다.

호스트 키가 바뀌었다며 앱이 연결을 거부합니다

그 검사가 제 역할을 하고 있는 것입니다. 정당한 원인은 서버를 다시 만들었거나 키를 교체한 경우이고, 정당하지 않은 원인은 중간에 누군가 있는 경우입니다. 새 키를 신뢰하고 재연결을 누르기 전에 어느 쪽인지 확인하세요. 직접 장비를 다시 만들었다면 호스트 편집기에서 기록된 호스트 키 지우기를 실행하고 새 지문을 의도적으로 확인하면 됩니다.

터미널에서 파일이 업로드되지 않습니다

두 가지 제한이 있습니다. 파일은 64 MB로 제한되고, 앱이 다시 사용할 수 있는 자격 증명이 호스트에 있어야 합니다. 로그인 수단이 일회용 코드뿐인 서버로는 업로드할 수 없습니다. 더 크거나 까다로운 경우에는 SFTP 파일 관리자나 매핑한 드라이브를 쓰세요.

앱이 내 Mac을 찾지 못합니다

설치만 되어 있는 것이 아니라 SharkTTY Desk가 실제로 실행 중인지 확인하세요. Mac이 잠들어 있을 수 있다면 Desk에서 네트워크로 깨우기를 켜세요. 네트워크가 다를 때는 앱이 직접 경로를 먼저 시도한 뒤 중계로 넘어가느라 연결에 몇 초가 걸릴 수 있습니다.

Mac 화면이 검게 보이거나 터치에 아무 반응이 없습니다

화면이 검다면 거의 언제나 화면 기록 권한이 없는 경우이고, 화면은 보이는데 반응하지 않는다면 손쉬운 사용 권한이 없거나 제어 허용이 꺼진 경우입니다. 둘 다 Mac의 시스템 설정 → 개인정보 보호 및 보안에 있으며 Desk가 그곳으로 바로 연결해 줍니다.

앱에 Mac이 아예 보이지 않습니다

버전을 확인하세요. SharkTTY Desk 0.9.0은 휴대폰이나 태블릿에 SharkTTY 1.6 이상이 필요합니다. App Store에서 업데이트하거나, 이전 앱 버전과 동작하는 이전 빌드 SharkTTY Desk 0.5.0을 설치하세요.

실제로 돈이 드는 것은 무엇인가요

꼭 필요한 것 중에는 없습니다. 앱, Mac 동반 앱, 기기 내 음성 인식을 비롯해 위에서 설명한 모든 기능이 무료이고, 내 서버에 접속하는 데 계정도 필요 없습니다. 공식 클라우드 AI 모델은 포인트로 비용을 치르며, 자신의 제공자 키를 쓰면 비용이 들지 않습니다. 후원은 선택이고 일회성 또는 월간이며 어떤 기능도 열어 주지 않습니다. 월간 후원은 Apple 계정 설정에서 취소할 때까지 갱신됩니다.

이제 설정할 차례입니다

SharkTTY는 App Store에서 무료이고, Mac용 SharkTTY Desk도 무료로 내려받을 수 있습니다.

Mac 쪽 자세한 내용은 SharkTTY Desk 페이지 에 있고, 질문에 가장 빨리 답을 받는 곳은 피드백 보드.