我正在使用从此处下载的 TightVNC Java Viewer:https://www.tightvnc.com/release-jviewer-2.6.php它具有内置的 SSH 支持。使用它,我想连接到运行 Ubuntu 16.04 的 Google Compute Engine 实例。
到目前为止,我已参考各种在线文档执行了以下步骤:
在 Ubuntu 实例上安装了 TightVNC 服务器。
使用以下方式启动 VNC 服务器
vncserver -localhost :1
OpenSSH 服务器已安装在实例上。
为实例分配静态外部 IP 地址
尝试使用 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