服务器配置-SSH
购买服务器后,首先需要配置的是 SSH。频繁登录云供应商平台、输入授权码等操作相当繁琐,因此 SSH 配置能大大简化登录流程。
SSH(Secure Shell)是一种用于安全远程登录和其他网络服务(如安全文件传输)的协议,支持多种登录方式,每种方式都有其优缺点。以下是 SSH 中常见的两种登录方式的分析(此外还有基于证书和双因素认证等其他方式,它们通常提供更高的安全性,但对于个人开发者而言,过于繁琐且成本较高,本文不作讨论):
1. 基于密码的登录
描述
用户通过输入用户名和密码进行身份验证。
优点
- 简单易用:用户只需记住密码,设置过程相对简单。
- 广泛支持:几乎所有 SSH 客户端和服务器都支持此方式。
缺点
- 安全性较低:如果密码被破解(如暴力攻击、社交工程等),攻击者可以轻易获得访问权限。
- 管理复杂:需要定期更改密码以增强安全性,用户可能会使用弱密码。
2. 基于公钥的登录
描述
使用 SSH 密钥对(公钥和私钥)进行身份验证。用户在服务器上放置公钥,而在本地计算机上保留私钥。
优点
- 安全性高:密钥对的安全性远高于简单密码,攻击者难以猜测私钥。
- 便捷性:一旦设置,用户可以在不输入密码的情况下轻松登录。
- 支持多种认证机制:可以为不同服务器设置不同的密钥。
缺点
- 初始设置复杂:需要生成密钥对并将公钥传输到服务器。
- 私钥管理:用户需妥善保管私钥,避免丢失或被盗。
每种 SSH 登录方式都有其独特的优势和不足。通常推荐使用 基于公钥的登录,因为它在安全性和便捷性之间取得了良好的平衡。
1. 如何获取密钥对?
物理机
使用以下命令生成 SSH 密钥对:
ssh-keygen -t rsa -b 4096
将公钥复制到远程服务器:
ssh-copy-id username@hostname
云服务器
几乎所有云服务供应商都提供了密钥管理功能,支持密钥生成及下载。以下是在腾讯云轻量云服务器上生成密钥的步骤:
- 选择产品-轻量云服务。
- 在左侧菜单中选择 SSH 密钥,点击创建密钥。
- 选择与服务器相同的地域,填写信息以生成 SSH-Key(还可以一键关联至服务器上)。
通过以上操作,可以轻松创建密钥对,使用 ssh-copy-id
或云服务商的一键关联功能将公钥配置到服务器上。请妥善保存好私钥(丢失不可恢复)。
接下来进行以下操作:
2. 修改 SSH 端口
自定义 SSH 端口号不仅可以增加安全性,还能减少自动化攻击的潜在风险。选择一个不常用的端口,可以有效地隐藏 SSH 服务,从而降低被攻击的可能性。
如何修改 SSH 端口:
服务器端的 SSH 配置文件通常位于 /etc/ssh/sshd_config
,该文件用于控制服务器端的行为、允许的认证方式和安全策略等。可以通过 Port
指令指定 SSH 的监听端口号,例如:
# /etc/ssh/sshd_config
Port 2222
上述配置将 SSH 服务的端口从默认的 22
改为 2222
。完成配置后,重启 SSH 服务以应用更改:
sudo systemctl restart sshd
这样,服务器将开始在端口 2222
上监听 SSH 连接。
3. 配置网络防火墙
对于物理服务器,可以配置防火墙以开放相应的 SSH 端口(如 2222)。云服务器则可通过云平台管理网络策略,根据页面配置开放对应的 SSH 端口。例如,腾讯云的配置示例:
4. 配置客户端免密登录
注意: 仅建议在个人电脑上配置免密登录。在公共网络或多用户共享的设备上,使用免密登录可能导致严重的安全风险,请谨慎选择。
客户端的配置文件通常位于用户目录下的 .ssh/config
中,用户可以为不同的主机设定各自的 SSH 参数。
客户端配置文件示例:
# ~/.ssh/config
Host myserver
HostName example.com
User myuser
Port 2222
IdentityFile ~/.ssh/myserver_key
密钥认证:确保私钥文件的权限是 600,否则 SSH 会拒绝使用该密钥进行连接。
通过以上配置,连接服务器时只需执行以下命令,操作便捷且安全(仅限私人电脑):
ssh myserver
常见配置项
- Host: 定义服务器的别名,可用
*
通配符配置多个主机。 - HostName: 指定服务器的实际地址或域名。
- User: 指定默认登录用户名。
- Port: 指定连接时使用的端口号。
- IdentityFile: 指定用于身份验证的私钥文件路径,可为不同主机指定不同的密钥。
5. 命令行连接
对于不常用或公共环境,建议使用云厂商平台登录,或使用以下临时登录命令:
ssh -p 2222 myuser@example.com -i ~/.ssh/myserver_key
该命令可临时指定端口号和私钥文件,避免修改配置文件,适合短期使用。
通过这些 SSH 配置,您可以显著提高登录过程的效率与安全性。强烈建议定期检查和更新您的安全配置,以应对潜在的威胁。