一、什么是SSH?

SSH(Secure Shell)是一种安全的远程登录协议,它能让你通过网络安全地连接到Linux服务器,就像用一把钥匙打开远程电脑的“大门”。和早期不安全的Telnet、FTP不同,SSH会对传输的数据进行加密,防止密码或命令被中间人窃取,尤其适合管理多台服务器的场景。

二、为什么需要配置SSH?

当你需要远程管理服务器(比如阿里云、腾讯云的云服务器,或者自己搭建的本地服务器)时,SSH是最常用的工具。比如:
- 你在公司加班,想远程操作家里的Linux服务器;
- 你需要批量管理多台服务器,不用一台台跑现场;
- 你想在本地编辑服务器上的代码,直接通过SSH同步文件。

三、服务器端:安装与启动SSH服务

1. 检查是否已安装SSH服务

Linux系统默认可能没安装SSH服务,先确认是否安装了sshd(SSH服务端程序)。
在终端执行:

# 检查sshd服务是否存在
dpkg -l | grep openssh-server  # Debian/Ubuntu系统
# 或
rpm -qa | grep openssh-server   # CentOS/RHEL系统

如果输出包含openssh-server,说明已安装;否则需要安装。

2. 安装SSH服务(以常见系统为例)

  • Debian/Ubuntu(用apt包管理器):
  sudo apt update  # 更新软件源
  sudo apt install openssh-server  # 安装SSH服务端
  • CentOS/RHEL(用yum包管理器):
  sudo yum install openssh-server  # 安装SSH服务端
  • 启动并设置开机自启
    安装后,SSH服务默认叫sshd,启动并设置开机自启:
  sudo systemctl start sshd    # 启动服务
  sudo systemctl enable sshd   # 设置开机自启

四、配置SSH服务(关键步骤)

SSH的核心配置文件是/etc/ssh/sshd_config,修改它可以调整端口、权限等。

1. 备份配置文件(重要!)

修改前先备份,防止出错无法恢复:

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

2. 常用配置项(新手必看)

nanovim打开配置文件(推荐nano更简单):

sudo nano /etc/ssh/sshd_config

重点关注以下配置(默认值可忽略,需要改的重点标红):

配置项 默认值 建议修改值(示例) 说明
Port 22 Port 2222 SSH端口(避免22被暴力破解,改大一点)
PermitRootLogin yes PermitRootLogin no 禁止root直接登录(更安全)
AllowUsers AllowUsers user1 仅允许user1用户登录
PasswordAuthentication yes PasswordAuthentication no 禁用密码登录(用密钥更安全,后文讲)

3. 重启SSH服务生效

修改完配置文件后,必须重启sshd服务才能生效:

sudo systemctl restart sshd

五、客户端连接:在本地用SSH登录服务器

1. 客户端工具选择

  • Windows:推荐PuTTY(免费)、Xshell(付费)、或Windows 10/11自带的PowerShell(需安装OpenSSH客户端)。
  • macOS/Linux:直接用终端(Terminal)输入命令。
  • 手机:Termius(支持多平台,图形化操作)。

2. 命令行连接(Linux/macOS)

在本地终端执行:

ssh 用户名@服务器IP -p 端口号

示例
- 用用户user1连接IP为192.168.1.100的服务器,端口2222:

  ssh user1@192.168.1.100 -p 2222
  • 第一次连接会提示“是否继续连接”,输入yes并回车。

3. 密码登录 vs 密钥登录(安全进阶)

  • 密码登录:直接输入密码,简单但不安全(易被暴力破解)。
  • 密钥登录:更安全!步骤如下:
    1. 本地生成密钥对(在本地终端执行):
     ssh-keygen -t ed25519  # 生成密钥对(一路回车默认即可)
 生成的私钥(`~/.ssh/id_ed25519`)在本地,公钥(`~/.ssh/id_ed25519.pub`)是给服务器的。
  1. 将公钥传到服务器
     ssh-copy-id -i ~/.ssh/id_ed25519.pub user1@192.168.1.100 -p 2222
 输入服务器密码后,公钥会自动写入`~/.ssh/authorized_keys`,下次登录无需密码。

六、安全注意事项(新手必看!)

1. 防火墙放行SSH端口

如果服务器开启了防火墙(如ufwiptables),需允许SSH端口:
- UFW防火墙(Ubuntu常用):

  sudo ufw allow 2222/tcp  # 允许2222端口(对应刚才改的端口)
  sudo ufw reload          # 重载防火墙
  • 云服务器:在阿里云/腾讯云控制台,需在“安全组”中开放SSH端口(如2222)。

2. 禁用root直接登录

修改PermitRootLoginno(见上文配置项),改用普通用户登录,再su -切换到root(更安全)。

3. 定期更新系统和SSH

sudo apt update && sudo apt upgrade  # Debian/Ubuntu
sudo yum update                      # CentOS/RHEL

七、常见问题排查

问题 可能原因 解决方法
连接超时 服务器IP错误/网络不通 检查IP和网络,ping服务器IP
拒绝连接 端口未开放/服务未启动 检查端口(telnet 192.168.1.100 2222),重启sshd
权限错误 ~/.ssh目录权限不对 执行 chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys

八、总结

SSH是Linux远程管理的“基石”,配置核心是:安装服务→修改安全配置→客户端连接。新手重点记住:改端口、禁用root、用密钥登录、防火墙放行。多练几次,就能熟练远程管理服务器啦!

如果遇到问题,记得先检查服务是否启动(systemctl status sshd),再看防火墙和配置文件,最后参考本文排查步骤,基本能解决大部分问题。

小夜