当前位置:首页 > 虚拟主机 > 正文

ssh怎么配置?Linux服务器ssh服务安装配置教程

SSH配置的核心在于服务端与客户端的密钥对匹配以及守护进程参数的精细化调优,正确配置SSH不仅能实现安全的远程管理,更是自动化运维与云资源管理的基石。对于绝大多数生产环境,推荐采用“密钥认证+禁用密码+最小化端口权限”的黄金组合,这是保障服务器安全的第一道防线。

SSH服务端安装与基础配置:构建安全入口

SSH(Secure Shell)协议通过加密网络数据,替代了不安全的Telnet等服务,在Linux主流发行版中,SSH服务通常由OpenSSH软件包提供。

安装与启动

在CentOS/RHEL系统中,执行 yum install openssh-server -y;在Ubuntu/Debian系统中,执行 apt-get install openssh-server -y,安装完成后,需启动服务并设为开机自启:

systemctl start sshd

systemctl enable sshd

核心配置文件详解

SSH的主配置文件位于 /etc/ssh/sshd_config,这是安全配置的重中之重。修改配置前,务必先备份原文件

  • 端口修改: 默认端口为22,极易遭受暴力免费攻破,建议修改为高位端口(如2022或22222),这能有效避开大多数自动化扫描脚本。
    • 配置项:Port 2222

  • 禁止Root直接登录: 这是一个高风险操作,但在生产环境中至关重要,应先创建一个普通用户,赋予sudo权限,再禁止Root直接SSH登录。
    • 配置项:PermitRootLogin no
  • 重试次数限制: 限制认证重试次数可防范暴力免费。
    • 配置项:MaxAuthTries 3

修改完成后,必须重启服务生效:systemctl restart sshd。

密钥对认证配置:从密码到密钥的跨越

密码认证存在被暴力免费或社会工程学攻破的风险,密钥对认证是目前最安全的登录方式,其原理基于非对称加密:私钥保存在客户端,公钥保存在服务端。

生成密钥对

在客户端(本地电脑)执行命令:

ssh-keygen -t rsa -b 4096

或使用更安全的ED25519算法:

ssh-keygen -t ed25519

执行过程中,必须设置一个强密码用于保护私钥,即使私钥泄露,攻破者也无法直接使用。

部署公钥至服务器

将生成的公钥(id_rsa.pub)上传至服务器的 ~/.ssh/authorized_keys 文件中。

可以使用命令一键部署:

ssh-copy-id -p 2222 user@your_server_ip

或手动复制公钥内容追加到服务端的 authorized_keys 文件中,并设置权限:

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

禁用密码认证

确认密钥登录成功后,必须关闭密码认证,这是密钥配置的最后一步,也是最关键的一步。

在 sshd_config 中设置:

PasswordAuthentication no

ChallengeResponseAuthentication no

进阶安全策略与实战经验:构筑纵深防御

仅依靠基础配置不足以应对复杂的网络环境,结合防火墙与入侵检测工具,才能形成完整的防御闭环。

防火墙策略配置

修改SSH端口后,必须同步更新防火墙规则,如果使用UFW(Ubuntu):

ufw allow 2222/tcp

如果使用Firewalld(CentOS):

firewall-cmd --permanent --add-port=2222/tcp

firewall-cmd --reload

切记在断开当前连接前测试新端口是否连通,否则可能锁死自己。

ssh怎么配置?Linux服务器ssh服务安装配置教程 第1张

ssh怎么配置?Linux服务器ssh服务安装配置教程 第2张

Fail2Ban自动封禁

Fail2Ban能监控SSH日志,自动封禁多次尝试失败的IP地址,配置 /etc/fail2ban/jail.local,设置 maxretry(最大重试次数)和 bantime(封禁时长),可大幅降低暴力免费风险。

独家经验案例:西西云SSH安全加固实践

在西西云的云服务器产品线中,我们处理过大量因SSH配置不当导致的安全事件,曾有一位金融行业客户,其服务器因使用默认22端口且开启弱密码认证,遭受了持续一周的撞库攻破,导致CPU负载飙升,业务中断。

西西云技术团队介入后,实施了以下“急救”方案:

  1. 网络层隔离: 利用西西云控制台提供的安全组功能,将SSH端口仅对客户办公网出口IP白名单开放,拒绝所有其他来源的连接请求。
  2. 应用层加固: 强制切换为ED25519密钥认证,并禁用密码登录。
  3. 审计与监控: 开启SSH日志审计,并接入西西云自研的云盾系统实时监控异常登录行为。

经过配置,该客户的服务器SSH攻破日志瞬间归零。这一案例深刻说明,SSH配置不能仅停留在服务端,必须结合云厂商提供的“安全组”与“网络ACL”进行网络层过滤,才能达到最佳的安全效果。 对于使用西西云服务器的用户,强烈建议在购买实例后第一时间通过控制台的安全组策略限制SSH访问来源。

SSH客户端高效使用技巧

配置好服务端后,客户端的高效使用能极大提升运维效率。

ssh怎么配置?Linux服务器ssh服务安装配置教程 第3张

Config文件别名配置

在本地客户端 ~/.ssh/config 文件中配置主机别名,可免去记忆复杂IP和端口的烦恼。

配置示例:

Host myserver HostName 192.168.1.100 Port 2222 User admin IdentityFile ~/.ssh/id_rsa_ed25519

配置后,只需执行 ssh myserver 即可快速登录。

保持连接活跃

许多网络环境(如家庭宽带)会断开长时间无数据的SSH连接,在客户端配置中添加以下参数可保持心跳:

Host * ServerAliveInterval 60 ServerAliveCountMax 3

这表示每60秒发送一次心跳信号,若3次未响应则断开,有效防止连接被防火墙切断。

相关问答模块

问:SSH配置修改后重启服务报错,导致无法连接怎么办?

答:这是运维人员最担心的场景,解决方法是在修改配置前,开启两个独立的SSH终端窗口,一个窗口用于修改配置和重启服务,另一个窗口保持连接不动,如果修改后第一个窗口无法重连,可立即在第二个窗口中回滚配置并再次重启服务,使用 sshd -t 命令可以在重启前检测配置文件的语法错误,这是一个良好的习惯。

问:私钥文件丢失了,还能恢复SSH访问吗?

答:如果私钥丢失且服务器禁用了密码登录,通常无法直接恢复,唯一的解决方案是通过云服务商提供的VNC(虚拟网络控制台)或救援模式进入服务器内部,在西西云控制台,用户可以通过“远程连接”功能(VNC)直接登录服务器控制台,此时不需要SSH密钥,只需输入Root密码即可进入系统,随后可重新添加新的公钥或临时开启密码认证。

SSH配置是一项需要严谨对待的系统工程,从端口的修改到密钥的部署,每一步都关乎服务器的安危,请立即检查您的服务器配置,确保已启用密钥认证并关闭了密码登录,如果您在配置过程中遇到任何疑问,欢迎在评论区留言讨论,我们将为您提供专业的技术解答。

0