我的主要目标是能够远程连接到我的家用电脑并具有类似远程桌面的功能。
哪种软件组合可以满足以下五个要求?
我有五个主要的限制:
它必须是安全的,这样才能 99.8% 确保只有我能访问我的电脑。
本地 PC 显示器不得显示已启动会话的屏幕图像。
有一款软件可以连接到 Windows 7 PC
它将在启动时启动,并且启动后不需要主机上的用户交互
帧速率必须较高 (~20-30),并且分辨率应较高 (1280x1024)
更多问题:
VNC 是否足够快以满足要求 5?
是否可以使用基于密钥的身份验证或 2FA 来保护 VNC 服务器以满足要求 1?
我可以让我的电脑使用 UPnP 自动进行必要的端口转发吗?
希望我已经解释得足够清楚了,如果有不清楚的地方请见谅。如有疑问,请随时询问。
答案1
1.安装 SSH
首先要做的是安装 SSH(安全 Shell 协议)服务器。对于 ubuntu 来说,这很简单,只需编写一个命令即可。只需复制粘贴以下命令即可安装服务器。
sudo apt install openssh-server
如果存在的话,
sudo apt purge openssh-server
并重新安装以避免安装时出现任何问题。
如果您想测试服务器是否正常工作,另一个好主意可能是安装客户端。
sudo apt install openssh-client
2.配置SSH服务器
现在必须配置 SSH 以启用基于密钥的身份验证,以提高安全性。作为第一步,应该备份原始配置,但如果您确定不会弄乱它,可以跳过此部分。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo chmod a-w /etc/ssh/sshd_config.bak
现在您可以使用文本编辑器来编辑配置文件。例如,您可以使用 gedit、nano 或 vim 作为编辑器。
sudo <TEXT EDITOR HERE> /etc/ssh/sshd_config
现在您已经打开了配置文件。首先要做的是更改端口。通常建议更改 SSH 服务器的端口以将其隐藏一点。它还可以阻止大多数机器人尝试进入您的机器。
更改端口
Port <Port number>
例如将其更改为
Port 2213
启用 X11 转发(远程显示您电脑的屏幕)更改。
X11Forwarding <Value>
到
X11Forwarding yes
现在运行此命令重新启动服务器(以应用配置更改。
sudo systemctl restart sshd
让我们检查一下状态。它必须是绿色“活动(正在运行)”。
sudo systemctl status sshd -l
现在尝试使用此命令连接到您的 ssh 服务器。
ssh -p <Port number> <Username>@localhost
3.设置 RSA 密钥
首先要采取的步骤是创建密钥文件夹。[1]
mkdir ~/.ssh
现在让我们生成密钥。按照说明进行操作。
ssh-keygen
加密主页
如果您的主目录已加密,SSH 将无法访问您的 authorized_keys 文件,因为它位于您的加密主目录中,并且只有在您通过身份验证后才可用。因此,SSH 将默认使用密码身份验证。
为了解决这个问题,在你的家外创建一个名为
sudo mkdir /etc/ssh/<username>
本目录必须具有 755 权限并由用户拥有。将 authorized_keys 文件移入其中。authorized_keys 文件必须拥有644个权限,并归用户所有。
然后编辑 /etc/ssh/sshd_config 并添加:
AuthorizedKeysFile /etc/ssh/%u/authorized_keys
密钥生成之后,我们把它复制到主机上。
ssh-copy-id -p <Port number> <User name>@<Host (localhost)>
完成后。必须设置密钥和文件夹的正确权限以保护其安全。
chmod go-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
(If you have encrypted home look at that section's folder permissions)
如果权限错误,您很可能会遇到错误。(来源:Ubuntu 维基)
现在,为了最终确保身份验证的安全,请找到这些行。
RSAAuthentication <Value>
PubkeyAuthentication <Value>
PasswordAuthentication <Value>
ChallengeResponseAuthentication <Value>
将其改为。
RSAAuthentication no
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
< 可选> 还可以将以下行添加/编辑到您的配置文件中,以进一步保护(“强化”)您的系统。阅读有关这些行的更多信息这里或从 sshd 的手册页中。
TCPKeepAlive no
ClientAliveInterval 60
ClientAliveCountMax 5
UsePrivilegeSeparation yes
PermitEmptyPasswords no
PermitRootLogin no
UseLogin no
UsePAM no
MaxAuthTries 2
如果客户端请求,则允许使用压缩。使用客户端中的压缩标志可以节省带宽(是)或 CPU(否)。
Compression yes
< 可选 >
完成安装
现在运行此命令重新启动服务器(以应用配置更改。
sudo systemctl restart sshd
让我们检查一下状态
sudo systemctl status sshd -l
确保它是绿色的并且“活动(正在运行)”。如果不是,则需要检查错误消息。如果一切正常,请尝试使用此命令连接到您的 ssh 服务器。
ssh -p <Port number> <Username>@localhost
如果失败,则通过命令行启动 sshd 并启用调试。这样它会立即打印出错误所在。
4. 设置便携式 USB 驱动器以进行 X11 转发
下载PuTTY 便携式。然后只需导入密钥,启用 x11forwarding。设置您的端口和用户名。然后是 x 服务器位置。
下载适用于 Windows 的 Xming X Server。由于 Windows 默认没有 X 服务器,因此您需要下载一个。它也可以移植(至少应该可以)。在使用 PuTTY 连接到 ssh 服务器之前,请先启动它。
5.设置动态DNS。
第一步是选择动态 DNS 提供商,我自己选择了 dynu.com。现在让我们安装所需的软件。为此,请将此命令复制粘贴到您的终端。这次我们将使用 ddclient。
sudo apt install ddclient
它将启动一个配置屏幕,直接跳过它,让我们自己编辑配置文件。(使用 nano、gedit 或任何你想编辑的文件,就像之前一样)
sudo <your text editor> /etc/ddclient.conf
现在让我们复制内容这里。
# ddclient configuration for Dynu
#
# /etc/ddclient.conf
daemon=60 # Check every 60 seconds.
syslog=yes # Log update msgs to syslog.
mail=root # Mail all msgs to root.
mail-failure=root # Mail failed update msgs to root.
pid=/var/run/ddclient.pid # Record PID in file.
ssl=yes # Use ssl-support. Works with ssl-library .
use=web, web=my.ip.fi/ # Get ip from hardware interface.
server=api.dynu.com # IP update server.
protocol=dyndns2
login=YOURUSERNAME # Your username.
password=YOURPASSWORD # Your password or MD5 of password.
MYDOMAIN.DYNU.COM # List one or more hostnames one on each line.
编辑网络接口、主机名、用户名和密码行以使其正常工作。您还需要有 IO::Socket::SSL。您可以使用此命令安装它。
sudo apt install libio-socket-ssl-perl
现在让我们设置 ddclient 在后台运行。[2]
sudo <your text editor> /etc/default/ddclient
找到以下几行:
run_dhclient=<value>
run_ipup=<value>
run_daemon=<value>
将其更改为
run_dhclient="false"
run_ipup="false"
run_daemon="true"
现在让我们开始吧
sudo systemctl start ddclient
让我们检查一下它是否正常工作
sudo systemctl status -l ddclient
确保它是绿色(“Active = active(running)”)
现在应该设置了动态 DNS。你现在可以用
ssh -p <Port number> <Username>@<Hostname (your dynamic DNS one)>
应该说
The authenticity of host '[<Dynamic DNS hostname>]:<Port> ([<Your IP address>]:<Port>)' can't be established.
它还会打印 ECDSA 密钥指纹,你可以使用
ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub
验证指纹是否相同,然后输入“是”以继续。注意!当您未清除已知主机文件且 IP 未更改时(如果您使用动态 DNS,它将更改),它绝不会在同一台机器上再次询问相同的问题。如果确实如此,请不要继续,除非您可以再次验证它与服务器上的指纹密钥相同。
现在它应该已经正常连接了,也许会询问你的密钥的密码,但不会询问其他任何事情。
6. 端口转发
现在动态 DNS 和服务器已设置完毕,您希望从其他网络连接到您的 PC。然后您必须以某种方式打开路由器的设置并转发您在 sshd 配置文件中设置的端口。否则您无法连接到 PC,因为路由器会阻止它。这在很大程度上取决于路由器的制造商,因此只需在 Google 上搜索“端口转发”或“端口转发”即可。您也可以阅读手册。
如果有什么不清楚或者错误的话,请告诉我。