跳到主要内容

连接服务器

Linux 系统上有一个工具被业界广泛使用,它就是 SSH。它虽然不能远程控制桌面,但是可以远程登录服务器的命令行,并让服务器执行一些命令。由于 ssh 命令非常常用,现在很多 Linux 发行版都已经默认集成了这个命令。 目前使用最广的提供 ssh 命令的软件是 OpenSSH

开启 SSH 服务

为了让客户能顺利连接服务器,云服务器的 sshd 服务一般默认开启。如果你使用的是家里云,或者云服务器的 sshd 服务确实没有开启 (比如你是只能通过服务商提供的 VNC 或者第三方远控软件连接的服务器,无法使用 SSH),那么你可能需要先开启 sshd 服务才能连接到服务器。 在主流的使用 systemd 的 Linux 发行版中,执行 systemctl enable --now sshd 命令即可开启 sshd 服务,如果这些命令都报错,证明 sshd 服务存在问题,你可以把报错复制粘贴到搜索引擎上查询怎么修复这个问题。 开启 sshd 服务后,你就可以连接到这台服务器了。

成功开启 SSH 服务后,如果要从公网连接,你还需要把 SSH 服务的端口 22 开放到公网。开放的方法与开放 Windows 的远程桌面端口的方式完全相同,但是协议只需要 TCP 即可。

注意

为了安全请不要在服务器上允许 root 用户登录 SSH!如果 SSH 被暴力破解的话会产生非常严重的后果!

最好可以禁用密码登录,仅允许密钥登录

关于配置你服务器的 SSH 使其更安全,可以查看 Arch Linux Wiki 的这篇文章

危险

配置直接在公网使用 22 端口连接服务器 SSH 会导致严重的安全性问题,详见 如何抵御网络攻击

另外除非有明确需求,不要随意配置 UDP 协议端口映射,包括上文中提到的 不需要 UDP 协议 的 SSH,否则可能导致你的服务器被 DDoS!详见 如何抵御网络攻击

连接 SSH 服务

Linux 的 ssh 命令

就像 Windows 不用安装任何软件就能连接 Windows 的远程桌面一样,Linux 也内置了连接 SSH 的方式,直接执行 ssh 命令即可连接。它的语法如下:

ssh <username>@<address> [-p port]

如何要指定端口,你需要指定端口参数。在一些操作系统上这个参数是 -p,例如ssh root@8aka.org -p 48291,有一些工具上则是直接在后面输入端口。 例如 Xshell 是 ssh root@8aka.org 48291。 你需要根据不同的工具的使用方式来确定 ssh 的命令格式。比如,你可以仅执行 ssh 命令 (等价于 ssh --help),然后让 SSH 工具提示你如何使用当前工具的这个命令,如果需要更详细的说明可以输入命令 man ssh

在输入完这行命令后,服务器通常会要求你输入该用户的密码。

如果你不想手动输密码,可以使用 密钥登录 ,这种方法更安全且通常更难以被破解,其步骤为:

  1. 使用 ssh-keygen 命令生成你的 SSH 密钥。

  2. 使用如 cat .ssh/id_xxxx.pub 命令来获取你生成的 SSH 公钥 (此命令中 xxxx 的值通常取决于你生成密钥对时选择的算法)

  3. 在服务器对应用户的家目录下创建 ./ssh/authorized_keys,编辑它,将你的公钥粘贴进去,每个公钥独占一行

  4. 执行上面的命令,你会发现连接时不再需要密码而是直接弹出 shell

使用工具连接

其他操作系统也可以使用工具连接至服务器,在这里举出几个工具:

Windows 系统自带的 PowerShell

按下 Win + R 输入 powershell 即可 (如果安装了新版的 PowerShell 那么你应该输入 pwsh)

随后在其中输入 ssh -p <port> <username>@<hostname> 即可连接 Linux 服务器。

此时会弹出是否保存服务器密钥,选择接受并保存,之后就不会再弹出。

提示

port 输入服务器的 SSH 端口

username 为登录服务器的用户名

hostname 为服务器的域名或者 IP

除了用 SSH 连接服务器之外,还有可以使用远程桌面。比如 VNC 和 RDP。服务器上一般不配备桌面环境和远程桌面环境,除非是非常需要,否则不建议在服务器上使用远程桌面。 关于桌面环境和远程桌面服务器的搭建,本文档不给予详细阐释,需要者可自行上网搜索相关内容。