一、什么是SSH服务?

SSH(Secure Shell)是一种安全的网络协议,用于通过加密方式远程管理Linux服务器。相比早期不安全的Telnet(明文传输),SSH能对登录信息、命令和数据进行加密,防止被黑客窃听或篡改。

二、安装SSH服务

首先需要在服务器上安装SSH服务端程序。不同Linux发行版安装命令不同:

  • Ubuntu/Debian
  sudo apt update  # 更新软件源
  sudo apt install openssh-server  # 安装SSH服务端
  • CentOS/RHEL
  sudo yum install openssh-server  # 安装SSH服务端(yum系统)
  # 或 CentOS 8+ 使用 dnf:
  sudo dnf install openssh-server

安装完成后,启动SSH服务并设置开机自启:

sudo systemctl start sshd  # 启动服务(Ubuntu/Debian用ssh)
sudo systemctl enable sshd  # 设置开机自启

检查服务状态:

sudo systemctl status sshd  # 若显示“active (running)”则已启动

三、使用SSH远程连接服务器

安装后,本地机器(Windows/macOS/Linux)可通过SSH客户端连接服务器。

  • Windows用户
  • 安装PuTTY(免费SSH客户端)或使用Windows 10+自带的OpenSSH客户端(在“应用和功能”→“可选功能”中添加)。
  • 打开命令提示符或PowerShell,输入:
    ssh 用户名@服务器IP  # 例如:ssh testuser@192.168.1.100
  • 首次连接时会提示“是否继续连接”,输入yes并回车。

  • Linux/macOS用户
    直接在终端输入:

  ssh 用户名@服务器IP  # 例如:ssh alice@192.168.1.100

输入密码后即可登录。

四、配置SSH服务(安全设置)

SSH的核心配置文件是/etc/ssh/sshd_config(Ubuntu/Debian为/etc/ssh/sshd_config,CentOS为/etc/ssh/sshd_config)。修改前建议备份原文件:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

关键配置项及作用

  1. 修改SSH端口(避免默认22端口)
    默认端口为22,易被扫描攻击。建议改为1024-65535之间的非默认端口(如2222):
   # 打开配置文件
   sudo nano /etc/ssh/sshd_config  
   # 找到并修改:Port 22 → Port 2222(示例端口,可自定义)
  1. 禁止root直接登录
    直接用root登录风险高,建议用普通用户登录后再提权:
   # 找到并修改:PermitRootLogin yes → PermitRootLogin no
  1. 禁用密码登录(推荐用密钥登录)
    密码易被暴力破解,后续章节会介绍密钥登录。若暂时禁用密码,需设为:
   # 找到并修改:PasswordAuthentication yes → PasswordAuthentication no
  1. 允许指定用户登录
    限制只有特定用户能登录,避免无关用户尝试:
   # 添加:AllowUsers 用户名1 用户名2(多个用户用空格分隔)
   AllowUsers alice bob  # 仅允许alice和bob登录

修改完成后,重启SSH服务使配置生效:

sudo systemctl restart sshd  # 重启服务

五、防火墙开放SSH端口

服务器防火墙默认可能阻止SSH连接,需开放自定义端口(如2222):

  • Ubuntu/Debian(ufw防火墙)
  sudo ufw allow 2222/tcp  # 开放2222端口(TCP协议)
  sudo ufw reload  # 重载防火墙
  • CentOS/RHEL(firewalld防火墙)
  sudo firewall-cmd --add-port=2222/tcp --permanent  # 永久开放端口
  sudo firewall-cmd --reload  # 重载防火墙规则

六、SSH密钥登录(更安全的方式)

密钥登录无需输入密码,通过本地生成的密钥对验证身份,适合长期使用。

步骤
1. 本地生成密钥对(在本地机器执行,非服务器):

   ssh-keygen -t ed25519  # 生成密钥对(推荐ed25519算法,速度快)
   # 一路回车即可,默认保存在~/.ssh/id_ed25519(私钥)和id_ed25519.pub(公钥)
  1. 将公钥复制到服务器
   ssh-copy-id -i ~/.ssh/id_ed25519.pub 用户名@服务器IP  # 输入服务器密码,自动复制公钥
  1. 禁用密码登录(在sshd_config中修改):
   PasswordAuthentication no  # 禁用密码登录
   PubkeyAuthentication yes   # 启用密钥登录(默认已开启)
  1. 重启服务
   sudo systemctl restart sshd

验证:下次登录时,直接执行ssh 用户名@服务器IP即可免密码登录。

七、常见问题排查

  • 连接超时:检查IP是否正确、端口是否开放、防火墙规则是否生效。
  • 权限错误~/.ssh目录权限需设为700authorized_keys权限设为600
  chmod 700 ~/.ssh  # 目录权限
  chmod 600 ~/.ssh/authorized_keys  # 公钥文件权限
  • 日志排查:通过/var/log/auth.log查看SSH连接日志,定位错误原因。

总结

SSH是Linux服务器远程管理的核心工具,配置时需重点关注端口修改、禁止root直连、禁用密码登录(密钥登录)和防火墙开放。通过以上步骤,既能安全远程连接服务器,又能大幅降低被攻击风险。

小夜