![Tailscale:SSH 可以與手動編譯的 Openssh 搭配使用,但不能與系統安裝的 Openssh 搭配使用](https://rvso.com/image/776327/Tailscale%EF%BC%9ASSH%20%E5%8F%AF%E4%BB%A5%E8%88%87%E6%89%8B%E5%8B%95%E7%B7%A8%E8%AD%AF%E7%9A%84%20Openssh%20%E6%90%AD%E9%85%8D%E4%BD%BF%E7%94%A8%EF%BC%8C%E4%BD%86%E4%B8%8D%E8%83%BD%E8%88%87%E7%B3%BB%E7%B5%B1%E5%AE%89%E8%A3%9D%E7%9A%84%20Openssh%20%E6%90%AD%E9%85%8D%E4%BD%BF%E7%94%A8.png)
(這個問題應該用“Tailscale”標記,但這還不存在 - 需要 Tailscale 的知識)
我有一台標準的 Ubuntu 20.04 筆記型電腦,透過 ssh 連接到遠端 Raspberry Pi(連接埠 22)。在遠端位置,路由器上有連接埠轉送(59995->22)。
~/.ssh/config
注意:我在測試期間已將其刪除。
SSH 始終連線成功,使用:
ssh user@public_ip -i ~/.ssh/id_rsa -p 59995
但是,當我使用 Tailscale IP 時,它永遠不會連接,只是掛起 120 秒然後逾時:
ssh user@tailscale-ip -i ~/.ssh/id_rsa
(不起作用)
但是,如果我手動編譯 OpenSSH v8.2,並使用該版本,而不是 /usr/bin/ssh 二進位文件,那麼它可以完美運行!即使 /usr/bin/ssh 也是 v8.2
./ssh user@tailscale-ip -i ~/.ssh/id_rsa
(這有效!)
回顧一下:系統二進位檔案可以與「普通」ssh 一起正常工作,但不能與 ssh-via-tailscale 一起工作。然而,手動編譯的(相同)版本的 Openssh 可以與常規 ssh 和 ssh-over-tailsale 一起正常工作。有誰知道可能是什麼原因造成的?
補充筆記
我不認為 tailscale 網路有任何明顯的問題:即,如果我透過 tailscale IP 進行探測,則nmap
掃描顯示正確的連接埠已打開,並且我可以netcat
直接訪問tailscale_ip:22
,它正在接收並回應。
diff ~/openssh-8.2p1/ssh /usr/bin/ssh
顯示二進位檔案不同。 (大小差異也很大,大約 3MB 與 0.7MB)
/usr/bin/ssh -V
:OpenSSH_8.2p1 Ubuntu-4ubuntu0.4、OpenSSL 1.1.1f 2020 年 3 月 31 日
~/openssh-8.2p1/ssh -V
:OpenSSH_8.2p1、OpenSSL 1.1.1f 2020 年 3 月 31 日
日誌/usr/bin/ssh -vvv user@tailscale_ip -i ~/.ssh/id_rsa
(ip 已編輯)
OpenSSH_8.2p1 Ubuntu-4ubuntu0.4, OpenSSL 1.1.1f 31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug2: resolve_canonicalize: hostname 100.1.1.1 is address
debug2: ssh_connect_direct
debug1: Connecting to 100.1.1.1 [100.1.1.1] port 22.
< 2 minute hang here >
ssh: connect to host 100.1.1.1 port 22: Connection timed out
答案1
我遇到了類似的問題,因為我的 ssh 用戶端沒有顯示 Tailscale 的 2FA 訊息,預設 ACL 策略ssh/action
設定為"check"
。
嘗試檢查您的使用者/標籤的 ACL 設定? ssh 的操作值是多少?如果它設定為"check"
- 嘗試將其更改為"access"
並嘗試透過 ssh 存取您的主機。如果這項工作有效 - 我建議研究如何將 2FA 新增至 ssh 用戶端,以便它會顯示"check"
模式下所需的 Tailscale 的身份驗證連結。
一些幫助我調查和解決類似問題的連結: