如何在 Ubuntu 上设置 NoMachine?
为什么选择Nomachine?
在 Windows 上,我喜欢使用 Chrome 远程桌面进行远程登录,而且效果很好。但是在 Linux 上,Chrome 远程桌面的问题接二连三,而且漏洞百出:
- 它阻止我安装和使用插入的 USB 磁盘或驱动器:在 Ubuntu 中,单击 GUI 文件管理器中的磁盘时自动挂载突然停止工作。(“无法挂载...无权执行操作。”)
- 它阻止我更改打印机设置:Ubuntu 18.04 gnome 设置:如何修复第二个用户(已是管理员)的“系统策略阻止更改。请联系您的系统管理员”
- 每次重新安装 Chrome 远程桌面,我大概会使用一次:无法连接到 Ubuntu 18 上的 Chrome 远程桌面
- ETC。
我听说 NoMachine 很好,想试一试。但是,我想使用基于密钥的身份验证并禁用基于密码的身份验证以提高安全性。那么,我该如何设置 NoMachine 来做到这一点?
答案1
我最初将这些说明发布在我的eRCaGuy_dotfiles回购这里:https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/tree/master/NoMachine
如果你需要 ssh 连接,我有文档记录我的各种 ssh 笔记在这里。
NoMachine 自述文件
NoMachine 是一个出色的远程登录程序,出色的文件共享/挂载功能和出色的跨平台支持 Windows、Mac、Linux、iOS、Android、Raspberry Pi 和 ARM。不是开源,但使用免费(仅限个人使用——企业必须付费)。
设置
下载:
https://www.nomachine.com/download
要启用基于密钥的服务器身份验证:
参考文献:
阅读这些!
本质上,只需将您的公钥添加到$HOME/.nx/config/authorized.crt
服务器上的文件中即可。如果该文件不存在,请创建它。将其权限设置为 0600。以下是执行此操作的命令的一个示例:
1)从客户:
从生成新的私钥/公钥对客户;从客户端运行此命令:
ssh-keygen -t rsa -b 4096 -C "your personal comment or email"
复制民众(.pub)密钥仅从客户端到服务器;从客户端运行;注意在目标上重命名文件以避免与服务器上已生成的密钥冲突:
scp ~/.ssh/id_rsa.pub username@server_hostname_or_ip:~/.ssh/id_rsa_nxclient.pub
2)从服务器:
现在将服务器上的公钥添加到正确的 NoMachine 文件中;从服务器运行此命令:
cat ~/.ssh/id_rsa_nxclient.pub >> ~/.nx/config/authorized.crt
最后将此文件的权限设置为 0600,以便仅为此文件的用户(所有者)启用对此文件的读/写,以确保安全:
chmod 0600 ~/.nx/config/authorized.crt
到禁用基于密码登录服务器:
注意:在基于密钥的身份验证设置完毕并验证有效之前,请勿执行此操作,否则您将无法通过 NoMachine 远程连接,并且必须通过 ssh 或本地手动远程修复它!
参考文献:(
没有准确回答这个问题,但间接有助于解答这个问题)
注意:在 Linux 上,server.cfg 位于此处:“/usr/NX/etc/server.cfg”。
在服务器上,编辑 server.cfg( sudo gedit /usr/NX/etc/server.cfg
) 并找到此部分:
#
# Specify how clients will have to authenticate to the server, by
# default all the available methods are supported. This corresponds
# to value all. To specify a subset of methods use a comma-separated
# list.
#
# Supported methods for connections by NX protocol are:
# NX-password : Password authentication.
# NX-private-key: Key-based authentication.
# NX-kerberos : Kerberos ticket-based authentication.
#
# Supported method for connections by SSH protocol is:
# SSH-system : All methods supported for the system login.
# SSH authentication methods for the system login
# have to be set on the system for example in the
# PAM configuration.
#
# For example:
# AcceptedAuthenticationMethods NX-private-key,SSH-system
#
# This key has to be used in conjunction with ClientConnectionMethod.
# See also the EnableNXClientAuthentication key for enabling SSL
# client authentication for connections by NX protocol.
#
#AcceptedAuthenticationMethods all
现在,就在注释掉的行下面,表示默认设置:
#AcceptedAuthenticationMethods all
添加此行以更改设置以仅允许基于密钥的身份验证:
AcceptedAuthenticationMethods NX-private-key
然后重新启动NoMachine服务器(https://www.nomachine.com/TR11N07362):
sudo /usr/NX/bin/nxserver --restart
现在尝试使用基于密码身份验证的 NoMachine 进行远程连接,您应该在 GUI 程序中看到以下错误:
Ooops! The session negotation failed. Error: Authentication method NX-password is not allowed on this server
如果您看到上述错误,则表示您已成功禁用密码验证登录!现在测试您的基于密钥的身份验证,以确保它仍然有效。
从网络外部进行连接
要从家外连接到 NoMachine,您必须通过 VPN 进入本地网络,或者通过调制解调器中的防火墙打开端口转发。
要进行端口转发,请在浏览器中通过其 IP 地址连接到调制解调器,并通过设置将一些外部端口(例如)映射10000
到内部计算机的 IP 和端口(其中有 NoMachine)。这些详细信息将在下次的另一个问答中介绍...
我认为,NoMachine 服务器的默认端口是4000
。单击 Ubuntu 右上角的 NoMachine 图标,转到“显示服务状态”--> 单击右侧的“服务器首选项”选项卡 --> 查看 NoMachine 服务器的“端口”。
完毕。
答案2
NoMachine 知识库对此进行了记录如何使用 NX 协议设置基于密钥的身份验证Gabriel Staples 在他的回答中提到:
但有一个BUG,需要额外步骤才能取消勾选将私钥导入到连接文件客户端上的复选框使其工作: