如何使用內建 SSH 的 TightVNC Java Viewer 連接到 Ubuntu Google Compute Engine 執行個體?

如何使用內建 SSH 的 TightVNC Java Viewer 連接到 Ubuntu Google Compute Engine 執行個體?

我正在使用從此處下載的 TightVNC Java 檢視器:https://www.tightvnc.com/release-jviewer-2.6.php它具有內建的 SSH 支援。使用它,我想連接到運行 Ubuntu 16.04 的 Google Compute Engine 執行個體。

到目前為止,我透過參考各種線上文件執行了以下步驟:

  1. 在 Ubuntu 實例上安裝 TightVNC 伺服器。

  2. 使用啟動VNC伺服器vncserver -localhost :1

  3. 實例上已安裝 OpenSSH 伺服器。

  4. 為實例指派靜態外部 IP 位址

  5. 嘗試使用 TightVNC Java 檢視器存取 VNC 伺服器,方法是將 SSH 主機指定為實例的外部 IP 位址,將 SSH 連接埠指定為預設值22,將SSH 使用者指定為實例擁有者,將遠端主機指定為localhost,將連接埠指定為VNC 連接埠5901

但連線失敗並出現錯誤:無法建立 SSH 連線:沒有可用的支援的身份驗證方法。

5901注意:我已經測試過,當我直接在 Compute Engine 防火牆設定中開啟連接埠並運行 時,VNC 連線可以在不使用 SSH 的情況下正常工作vncserver :1。這樣,使用 TightVNC Java Viewer 本身,我就可以存取我在 Ubuntu 上安裝的 Mate 桌面。但我想改用透過 SSH 的安全連線。那我還需要做什麼才能實現這一點呢?

答案1

或者,如果您想使用更安全的基於金鑰的身份驗證,您可以使用 ssh 用戶端獨立建立隧道並透過它執行 vncviewer。如果您從基於 UNIX 的系統進行連接,這樣的命令將會起作用:

ssh -i /path/to/key -L 5901:localhost:5901 [email protected]

或者,如果您從 Windows 進行連接,putty 會提供 GUI,並且也可以進行隧道連接。然後,您只需將 vncviewer 指向 localhost:5901(無需 ssh),即可獲得加密的 vnc 連接,而無需透過網路傳遞密碼。

答案2

我從這篇文章中發現,目前 TightVNC 僅支援 SSH 的密碼驗證,而不支援私鑰驗證:http://vnc-tight-list.narkive.com/IGmBV7W6/tightvnc-java-viewer-jsch-key-based-authentication。因此,要使用它,需要按照此處的步驟在 Compute Engine 實例上啟用 SSH 的密碼身份驗證:http://itmeditate.blogspot.in/2014/03/enable-password-authentication-for.html其中提到的警告。

此外,請確保您的系統中具有以下配置/etc/ssh/sshd_config文件:

PermitRootLogin prohibit-password
PermitEmptyPasswords no
PasswordAuthentication no

並僅允許對文件末尾的特定使用者名稱進行密碼身份驗證,如下所述:https://serverfault.com/questions/307407/ssh-allow-password-for-one-user-rest-only-allow-public-keys

相關內容