一、什么是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. 常用配置项(新手必看)¶
用nano或vim打开配置文件(推荐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`)是给服务器的。
- 将公钥传到服务器:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user1@192.168.1.100 -p 2222
输入服务器密码后,公钥会自动写入`~/.ssh/authorized_keys`,下次登录无需密码。
六、安全注意事项(新手必看!)¶
1. 防火墙放行SSH端口¶
如果服务器开启了防火墙(如ufw、iptables),需允许SSH端口:
- UFW防火墙(Ubuntu常用):
sudo ufw allow 2222/tcp # 允许2222端口(对应刚才改的端口)
sudo ufw reload # 重载防火墙
- 云服务器:在阿里云/腾讯云控制台,需在“安全组”中开放SSH端口(如2222)。
2. 禁用root直接登录¶
修改PermitRootLogin为no(见上文配置项),改用普通用户登录,再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 ~/.ssh 和 chmod 600 ~/.ssh/authorized_keys |
八、总结¶
SSH是Linux远程管理的“基石”,配置核心是:安装服务→修改安全配置→客户端连接。新手重点记住:改端口、禁用root、用密钥登录、防火墙放行。多练几次,就能熟练远程管理服务器啦!
如果遇到问题,记得先检查服务是否启动(systemctl status sshd),再看防火墙和配置文件,最后参考本文排查步骤,基本能解决大部分问题。