如何在linux安装ssh
- Linux
- 2025-08-17
- 6
sudo apt install openssh-server
(Debian/Ubuntu)或
sudo yum install openssh-server
(CentOS/RHEL),再运行
sudo systemctl enable --now sshd
即可完成
SSH 安装与
以下是关于 如何在 Linux 系统中安装并配置 SSH(Secure Shell) 的完整指南,涵盖多种主流发行版的操作步骤、核心概念解析及实用技巧:
前置知识:什么是 SSH?
SSH(Secure Shell)是一种加密的网络协议,用于替代传统的 Telnet/FTP 等明文传输工具,其核心功能包括:
安全远程登录:通过密码或密钥认证实现终端访问;
文件传输:支持 scp
(安全拷贝)和 rsync
;
隧道代理:可穿透防火墙建立加密通道;
跨平台兼容:适用于 Windows/macOS/Linux/Unix 系统。
️ 注意:默认情况下,大多数 Linux 发行版未预装 OpenSSH 服务器组件,需手动安装。
按发行版分类的安装方法
| 发行版类型 | 包管理器 | 安装命令 | 备注 |
|——————|——————-|———————————–|————————–|
| Ubuntu/Debian | apt
| sudo apt update && sudo apt install openssh-server
| 推荐优先执行更新源同步 |
| CentOS/RHEL | dnf
/yum
| sudo yum install -y openssh-server
或 sudo dnf install -y openssh-server
| RHEL 8+ 建议使用 dnf
|
| Arch Linux | pacman
| sudo pacman -S openssh
| 自动处理依赖关系 |
| Fedora | dnf
| sudo dnf install -y openssh-server
| 与 CentOS 命令一致 |
| openSUSE | zypper
| sudo zypper install openssh
| YaST 图形界面也可操作 |
通用验证方式:
安装完成后,可通过以下命令确认版本:
ssh -V # 输出示例:OpenSSH_8.9p1, OpenSSL 3.0.7...
服务管理与启动
启动/停止 SSH 服务
操作 | Ubuntu/Debian | CentOS/RHEL | Arch/Fedora |
---|---|---|---|
启动服务 | sudo systemctl start sshd |
sudo systemctl start sshd |
sudo systemctl start sshd |
开机自启 | sudo systemctl enable sshd |
sudo systemctl enable sshd |
sudo systemctl enable sshd |
重启服务 | sudo systemctl restart sshd |
sudo systemctl restart sshd |
sudo systemctl restart sshd |
查看状态 | systemctl status sshd |
systemctl status sshd |
systemctl status sshd |
提示:若出现 “Failed to start” 错误,可尝试
journalctl -xe
查看日志定位问题。
防火墙配置(关键步骤!)
若服务器启用了防火墙(如 ufw
或 firewalld
),必须放行 SSH 默认端口 22:
- Ubuntu/Debian:
sudo ufw allow 22/tcp sudo ufw reload
- CentOS/RHEL:
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload
基础配置优化
主配置文件路径
所有发行版的主配置文件均为 /etc/ssh/sshd_config
,常用参数说明如下表:
参数 | 默认值 | 作用 | 推荐修改建议 |
---|---|---|---|
Port | 22 | SSH 监听端口 | 生产环境建议改为非标准端口 |
PermitRootLogin | yes | 是否允许 root 直接登录 | 改为 without-password 更安全 |
PasswordAuthentication | yes | 是否启用密码认证 | 高危场景建议设为 no |
PubkeyAuthentication | yes | 是否启用公钥认证 | 保持默认 |
X11Forwarding | no | 是否启用 X11 转发 | 根据需求调整 |
AllowUsers | (空) | 白名单机制,仅允许指定用户登录 | 限制敏感账户暴露 |
DenyUsers | (空) | 黑名单机制,禁止指定用户登录 | 配合 AllowUsers 使用 |
修改生效方式:
编辑保存后执行 sudo systemctl restart sshd
。
生成 SSH 密钥对(推荐)
相比密码登录,密钥认证更安全且便捷:
# 本地机器执行(客户端) ssh-keygen -t rsa -b 4096 -C "your_email@example.com" # 按提示选择保存路径(默认 ~/.ssh/id_rsa) # 将公钥上传至服务器 ssh-copy-id user@remote_host
注意:首次使用时需输入服务器密码,后续可直接免密登录。
连接测试与排错
本地连接测试
ssh user@localhost # 或通过 IP 地址 ssh user@192.168.1.100
成功标志:显示欢迎信息并进入目标系统的终端。
常见错误及解决方案
错误现象 | 可能原因 | 解决方法 |
---|---|---|
Connection refused |
SSH 服务未运行/防火墙拦截 | systemctl status sshd + 检查防火墙规则 |
Permission denied |
密码错误/账户被禁用 | 重置密码或检查 /etc/passwd |
No route to host |
网络不通/IP 错误 | ping 测试连通性 |
Too many authentication failures |
触发防暴力破解机制 | 等待几分钟后重试 |
高级安全实践
禁用 root 直接登录
修改 /etc/ssh/sshd_config
:
PermitRootLogin no
并通过普通用户提权执行特权操作。
更改默认端口
将 Port 22
改为其他高位端口(如 2222),并在防火墙中同步更新规则。
定期审计日志
查看 /var/log/auth.log
分析登录尝试记录:
grep "Failed password" /var/log/auth.log # 查找可疑登录行为
相关问答 FAQs
Q1: 为什么我明明安装了 SSH,但依然无法从外部连接?
A: 请按以下顺序排查:
- 确认服务已启动且设置为开机自启 →
systemctl status sshd
; - 检查防火墙是否放行了 SSH 端口(默认 22);
- 确保 SELinux 未阻止连接(CentOS/RHEL 特有),可临时关闭测试:
setenforce 0
; - 核对
/etc/ssh/sshd_config
中的ListenAddress
是否绑定了正确的网卡 IP。
Q2: 如何限制某个用户只能通过密钥登录?
A: 编辑该用户的专属配置文件 /etc/ssh/sshd_config.d/user_specific
(需自行创建),添加以下内容:
Match User restricted_user PasswordAuthentication no ForceCommand /bin/echo "Access denied."
此配置会禁止该用户使用密码登录,并对非规请求返回固定提示。
通过以上步骤,您已完成 SSH 服务的完整部署与基础安全加固,建议定期更新系统补丁(如 OpenSSH 破绽修复),并采用最小权限