首先要对“服务器”和“客户端”的概念有个理解。对于本文而言,被控制的电脑是服务器,进行控制的电脑使用客户端。
本文指的不是黑客的远程控制,而是正常情况下 Linux 用户或管理员用的远程控制。
命令行
服务器端
Linux/Unix 使用 ssh 进行远程登录。
Linux 一般都自带并且开启了 ssh,所以无需额外配置。
OS X 也自带 ssh,但是需要手动开启。在“系统偏好设置”中找到“共享”,然后开启“远程登录”。
为了提高安全性,可以限制 ssh 的访问范围,或者采用一次性密码本。配置文件可能是 /etc/sshd_config
或 /etc/ssh/sshd_config
一类的文件。
客户端
- Windows 中有 PuTTY、SecureCRT 等软件。
-
Linux/OS X 系统可使用自带的 ssh 命令进行连接,也可以找一些软件。
假设服务器端 IP 为 192.168.1.100,那么登录到 root 账户的命令为:
ssh root@192.168.1.100
图形界面 (ssh)
ssh 有一个很好玩的特性——X11 forwarding。
为什么说它很好玩呢?Windows 的远程桌面只能远程整个屏幕,而 Linux 可以只远程一个窗口!
服务器端
因为苹果不用 X,所以这个当然仅适用于 Linux 系统。
其实什么都不用做,而且不用必须开启图形界面。当然,你的系统得安装过图形界面。
客户端
首先要安装 X Server:
- Windows 可以装 Xming。
- Linux 当然不用装了。
- OS X 需要安装 XQuartz。过去 X11 是系统自带的,但是现在要手动安装一下。
然后在远程连接时要开启 X11 forwarding。
- Windows:以 PuTTY 为例,Connection->SSH->X11->Enable X11 forwarding
-
Linux/OS X:
ssh -XY root@192.168.1.100
接下来随便启动一个图形界面程序——一个来自远程的窗口。
图形界面 (VNC)
服务器端
OS X 比较简单,系统偏好设置->共享->屏幕共享。如果想开多个不同会话,在登录时不要选择同一用户。
继续说 Linux 的问题:
VNC 服务器有很多种,例如 TightVNC、X11vnc、RealVNC 等。有的支持新会话 (TightVNC),有的只能控制当前桌面 (X11vnc)。应该根据实际需要来进行选择。
在配置好 VNC 服务器之后要设置访问密码。
因为第一次配置一般都比较啰嗦,所以网上有很多配置教程。大家应该根据自己的系统进行搜索。
值得注意的是,某些桌面环境,例如 Ubuntu 的 Unity,使用开启新会话的 VNC 服务器可能会遇到错误。只能用 X11vnc 了。
客户端
有一个比较好用的客户端是 VNC Viewer,同时支持 Windows、Linux 和 OS X 三大系统。
OS X 系统自带一个 VNC 客户端——假如服务器为 192.168.1.100:1,那么在 Finder 中按Command+K (连接服务器),输入 vnc://192.168.1.100:5901
然后就可以用了。
注意事项
- 在远程控制过程中,尽量避免更改网络设置。如果必须更改,在确认之前要确保设置正确,因为一旦网络参数错误,你会和电脑失去连接。
- 如果服务器端安装了防火墙,那么必须要开放特定端口,否则外界是访问不到的。
- ssh: 22
- VNC: 5900、5901、5902……
- RDP: 3389
- 事实上端口是可以更改的。更改之后,连接时要把端口明确指出来。
安全性
把服务器暴露在公网中,而且允许任意人远程连接,那么将会带来极大的安全隐患。实践证明,只要在公网中出现,很快就会有人过来扫描和探测。
因此可以考虑一些防御措施:
- 换端口,避开常用端口号。但是,注意,端口是可以扫描的,而且端口对应服务是可以探测出来的,所以其他措施也很重要。
- 配置防火墙,限制只有指定 IP 能够访问。
- 经常查看日志,确保没有人在暴力试探你的服务器。安装 fail2ban,自动封杀尝试爆破的人。
- 使用更安全的认证方式,如 SSH Key 和一次性密码本。
- 不使用时将远程连接服务器关掉。当然 SSH 还得留着,要不然联系就中断了。