當需要通過一臺windows電腦上的vscode來ssh連接另一臺電腦上的linux虛擬機進行遠程操作,可以通過tailscale來實現。
Linux虛擬機上安裝tailscale
由于掛代理下載仍然很慢,而清華鏡像源又沒有tailscale的軟件包,所以可以通過下載 DEB 包安裝:
wget https://pkgs.tailscale.com/stable/tailscale_1.86.2_amd64.deb
如果下載仍然很慢,可在windows主機瀏覽器下載后再拖入虛擬機。
接下來手動安裝:
sudo dpkg -i tailscale_*.deb
sudo apt-get install -f # 自動修復依賴
啟動并登陸:
sudo tailscale up
復制彈出來的鏈接,在windows主機的瀏覽器中打開,建議登陸谷歌郵箱賬號,登陸成功linux虛擬機中即可同步讀取到登陸結果。
檢查是否安裝成功:
tailscale version
彈出類似這樣的信息安裝成功:tailscale version: 1.86.2
另一臺Windows電腦上安裝tailscale
登陸同樣的谷歌郵箱后在下載頁直接下載官方客戶端:Download | Tailscale
建立ssh連接
在linux虛擬機終端輸入下面命令查看ip地址:
tailscale ip
通常是?100.x.y.z
?格式的 IPv4 地址,比如是100.87.234.55。
確保另一臺電腦上的 Windows 也安裝并登錄了 Tailscale?(使用同一個賬號)。
打開windows電腦的vscode,點擊左下角的藍色圖標打開遠程窗口,點擊連接到主機,選擇添加新的ssh主機,輸入這個格式的命令:ssh 《linux虛擬機的用戶名》@<你的-Tailscale-IP>,比如:
ssh ljy@100.87.234.55
配置好后選擇連接,輸入虛擬機的密碼即可成功連接。
通過固定昵稱和MagicDNS 域名進行連接
由于IP可能會發生變化,所以可以通過固定的昵稱和MagicDNS 域名進行連接會更穩定。
可以在linux虛擬機的終端中輸入
tailscale status --json | grep DNSName
或者在安裝了tailscale的這臺windows電腦的powershell中輸入
tailscale status --json | findstr "DNSName"
都可以看到相同的結果,比如
? ? "DNSName": "ljy.tailb55a8b.ts.net.",
? ? "DNSName": "ljy-virtual-machine.tailb55a8b.ts.net.",
所以直接在windows電腦的vscode 添加新的ssh主機 處輸入以下命令:
ssh ljy@ljy-virtual-machine.tailb55a8b.ts.net
按照同樣的步驟連接并輸入密碼即可成功連接。
永久生效配置
如果重新啟動虛擬機或者安裝了tailscale的windows電腦,那么tailscale需要重新開啟一下才能連接。即虛擬機需要通過?sudo tailscale up 來
重新登陸認證,windows電腦需要打開tailscale客戶端進行連接。
也可以配置一下讓虛擬機啟動后自動生效:
先去tailscale的管理后臺:Keys - Tailscale
點擊 ??“Generate auth key”?
選擇 ??“Reusable”??
點擊 ??“Generate key”?生成密鑰。
回到machines選項卡下:Machines - Tailscale
點擊虛擬機的? ??“Disable key expiry”(由于我點過了所以變成了Enable),設置為永不過期。
配置自動登錄:
# 啟用 tailscale 系統服務開機自啟
sudo systemctl enable tailscaled# 使用永久密鑰登錄(替換你的密鑰)
sudo tailscale up --auth-key=tskey-auth-xxxxxxxxx# 檢查服務狀態(應顯示 "active (running)")
sudo systemctl status tailscaled