分类 运维部署 下的文章

购买服务器后,首先需要配置的是 SSH。频繁登录云供应商平台、输入授权码等操作相当繁琐,因此 SSH 配置能大大简化登录流程。


SSH(Secure Shell)是一种用于安全远程登录和其他网络服务(如安全文件传输)的协议,支持多种登录方式,每种方式都有其优缺点。以下是 SSH 中常见的两种登录方式的分析(此外还有基于证书和双因素认证等其他方式,它们通常提供更高的安全性,但对于个人开发者而言,过于繁琐且成本较高,本文不作讨论):

1. 基于密码的登录

描述

用户通过输入用户名和密码进行身份验证。

优点

  • 简单易用:用户只需记住密码,设置过程相对简单。
  • 广泛支持:几乎所有 SSH 客户端和服务器都支持此方式。

缺点

  • 安全性较低:如果密码被破解(如暴力攻击、社交工程等),攻击者可以轻易获得访问权限。
  • 管理复杂:需要定期更改密码以增强安全性,用户可能会使用弱密码。

2. 基于公钥的登录

描述

使用 SSH 密钥对(公钥和私钥)进行身份验证。用户在服务器上放置公钥,而在本地计算机上保留私钥。

优点

  • 安全性高:密钥对的安全性远高于简单密码,攻击者难以猜测私钥。
  • 便捷性:一旦设置,用户可以在不输入密码的情况下轻松登录。
  • 支持多种认证机制:可以为不同服务器设置不同的密钥。

缺点

  • 初始设置复杂:需要生成密钥对并将公钥传输到服务器。
  • 私钥管理:用户需妥善保管私钥,避免丢失或被盗。

每种 SSH 登录方式都有其独特的优势和不足。通常推荐使用 基于公钥的登录,因为它在安全性和便捷性之间取得了良好的平衡。

1. 如何获取密钥对?

物理机

  1. 使用以下命令生成 SSH 密钥对:

    ssh-keygen -t rsa -b 4096
  2. 将公钥复制到远程服务器:

    ssh-copy-id username@hostname

云服务器

几乎所有云服务供应商都提供了密钥管理功能,支持密钥生成及下载。以下是在腾讯云轻量云服务器上生成密钥的步骤:

  1. 选择产品-轻量云服务。
  2. 在左侧菜单中选择 SSH 密钥,点击创建密钥。
  3. 选择与服务器相同的地域,填写信息以生成 SSH-Key(还可以一键关联至服务器上)。
    tencent-gen-sshkey.png

通过以上操作,可以轻松创建密钥对,使用 ssh-copy-id 或云服务商的一键关联功能将公钥配置到服务器上。请妥善保存好私钥(丢失不可恢复)。

接下来进行以下操作:

2. 修改 SSH 端口

自定义 SSH 端口号不仅可以增加安全性,还能减少自动化攻击的潜在风险。选择一个不常用的端口,可以有效地隐藏 SSH 服务,从而降低被攻击的可能性。

如何修改 SSH 端口:

服务器端的 SSH 配置文件通常位于 /etc/ssh/sshd_config,该文件用于控制服务器端的行为、允许的认证方式和安全策略等。可以通过 Port 指令指定 SSH 的监听端口号,例如:

modify-ssh-port.png

# /etc/ssh/sshd_config

Port 2222

上述配置将 SSH 服务的端口从默认的 22 改为 2222。完成配置后,重启 SSH 服务以应用更改:

sudo systemctl restart sshd

这样,服务器将开始在端口 2222 上监听 SSH 连接。


3. 配置网络防火墙

对于物理服务器,可以配置防火墙以开放相应的 SSH 端口(如 2222)。云服务器则可通过云平台管理网络策略,根据页面配置开放对应的 SSH 端口。例如,腾讯云的配置示例:

tencent-firewall-config.jpg

4. 配置客户端免密登录

注意: 仅建议在个人电脑上配置免密登录。在公共网络或多用户共享的设备上,使用免密登录可能导致严重的安全风险,请谨慎选择。

客户端的配置文件通常位于用户目录下的 .ssh/config 中,用户可以为不同的主机设定各自的 SSH 参数。

客户端配置文件示例:

# ~/.ssh/config
Host myserver
    HostName example.com
    User myuser
    Port 2222
    IdentityFile ~/.ssh/myserver_key
密钥认证:确保私钥文件的权限是 600,否则 SSH 会拒绝使用该密钥进行连接。

通过以上配置,连接服务器时只需执行以下命令,操作便捷且安全(仅限私人电脑):

ssh myserver

常见配置项

  1. Host: 定义服务器的别名,可用 * 通配符配置多个主机。
  2. HostName: 指定服务器的实际地址或域名。
  3. User: 指定默认登录用户名。
  4. Port: 指定连接时使用的端口号。
  5. IdentityFile: 指定用于身份验证的私钥文件路径,可为不同主机指定不同的密钥。

5. 命令行连接

对于不常用或公共环境,建议使用云厂商平台登录,或使用以下临时登录命令:

ssh -p 2222 myuser@example.com -i ~/.ssh/myserver_key

该命令可临时指定端口号和私钥文件,避免修改配置文件,适合短期使用。


通过这些 SSH 配置,您可以显著提高登录过程的效率与安全性。强烈建议定期检查和更新您的安全配置,以应对潜在的威胁。