跳至內容
Secret Knock

適用於 iPhone、iPad 和 Mac 的 knockd 用戶端

當一個位址及時依序連線至一組秘密連接埠時,knockd 會開啟連接埠。Secret Knock 可從你的 iPhone、iPad、Mac 或 Apple Watch 傳送該序列,檢查連接埠是否回應,並開啟你的 SSH app。

Secret Knock 傳送的內容

門的每個步驟都是對一個連接埠進行 TCP 或 UDP 敲門,可選擇在之前加入延遲;UDP 也可選擇以文字或十六進位格式加入承載資料。一次 TCP 敲門就是一次連線嘗試:app 會傳送單一 SYN,並立即結束該嘗試,因此作業系統不會重新傳送它 — knockd 0.8 會在重複收到 SYN 時重設序列。

一次性序列(knockd 的 one_time_sequences)同樣適用:選擇「敲門類型」›「一次性序列(knockd)」並輸入清單;敲門開啟門後,Secret Knock 會移至下一個序列。輸入 knockd.conf 不會讀取序列檔案 — 輸入功能會說明此事 — 因此請手動輸入該清單。

設定伺服器

以下是最精簡的 knockd 區段,可為敲門位址開啟 SSH 10 秒。請自行選擇連接埠 — 切勿重複使用公開範例。

[options]
    UseSyslog

[openSSH]
    sequence      = 7311:tcp,8822:tcp,9133:udp
    seq_timeout   = 10
    tcpflags      = syn
    start_command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
    cmd_timeout   = 10
    stop_command  = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
/etc/knockd.conf

在 app 中新增門

  1. 1新增門 › 從範本開始 › knockd(範例 7000、8000、9000)會填入三連接埠 TCP 序列,並將 SSH 設為要檢查的連接埠;請以你的連接埠取代。
  2. 2或者,選擇 + › 從檔案輸入,然後選取你的 knockd.conf:每個含有序列的區段都會成為一扇門。
  3. 3如果伺服器的 knockd 僅監聽其中一種位址系列,請為該門固定使用 IPv4 或 IPv6。
  4. 4按住黃銅門環。連接埠 22 回應後,門會顯示「門微開」,而「開啟 SSH」會將你交給 SSH app。

GitHub 上的所有範例 → 本頁的每項設定皆可直接複製:github.com/mobilcomm/secretknock-examples(公眾領域)。

問題

它是否支援 knockd 的 tcpflags = syn?

支援。每次 TCP 敲門都是單一 SYN,這正是 tcpflags = syn 所計算的內容。

我可以將同一次敲門顯示為指令嗎?

可以。門編輯器會將敲門顯示為可直接貼到終端機的 knock 指令。

適用於您設定的指南