远程控制

首先要对“服务器”和“客户端”的概念有个理解。对于本文而言,被控制的电脑是服务器,进行控制的电脑使用客户端。

本文指的不是黑客的远程控制,而是正常情况下 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 然后就可以用了。

注意事项

  1. 在远程控制过程中,尽量避免更改网络设置。如果必须更改,在确认之前要确保设置正确,因为一旦网络参数错误,你会和电脑失去连接。
  2. 如果服务器端安装了防火墙,那么必须要开放特定端口,否则外界是访问不到的。
    • ssh: 22
    • VNC: 5900、5901、5902……
    • RDP: 3389
  3. 事实上端口是可以更改的。更改之后,连接时要把端口明确指出来。

安全性

把服务器暴露在公网中,而且允许任意人远程连接,那么将会带来极大的安全隐患。实践证明,只要在公网中出现,很快就会有人过来扫描和探测。

因此可以考虑一些防御措施:

  1. 换端口,避开常用端口号。但是,注意,端口是可以扫描的,而且端口对应服务是可以探测出来的,所以其他措施也很重要。
  2. 配置防火墙,限制只有指定 IP 能够访问。
  3. 经常查看日志,确保没有人在暴力试探你的服务器。安装 fail2ban,自动封杀尝试爆破的人。
  4. 使用更安全的认证方式,如 SSH Key 和一次性密码本。
  5. 不使用时将远程连接服务器关掉。当然 SSH 还得留着,要不然联系就中断了。