如何使用内置 SSH 的 TightVNC Java Viewer 连接到 Ubuntu Google Compute Engine 实例?

如何使用内置 SSH 的 TightVNC Java Viewer 连接到 Ubuntu Google Compute Engine 实例?

我正在使用从此处下载的 TightVNC Java Viewer: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 Viewer 访问 VNC 服务器,通过将 SSH 主机指定为实例的外部 IP 地址、将 SSH 端口指定为默认值22、将 SSH 用户指定为实例所有者、将远程主机指定为本地主机并将端口指定为 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

相关内容