一、基础概念与环境准备
Secure Shell(SSH)是一种加密网络协议,用于安全地在不安全网络中进行远程登录和执行命令。Linux系统通常使用OpenSSH作为其默认的SSH实现。
OpenSSH客户端:大多数发行版默认已安装,允许用户通过ssh命令连接到其他主机。OpenSSH服务端:即openssh-server包,提供sshd守护进程,负责监听并处理来自客户端的连接请求。
在开始配置前,请确认您的Linux发行版类型,例如:
类别常见发行版包管理器Debian系Ubuntu, Debian, Kali LinuxaptRHEL系CentOS, RHEL, Rocky Linuxyum / dnfArch系Arch Linux, Manjaropacman
二、安装OpenSSH服务器组件
根据不同的Linux发行版,安装命令略有不同。以下是几个主流系统的安装指令:
# Ubuntu/Debian
sudo apt update
sudo apt install openssh-server
# CentOS/RHEL
sudo yum install openssh-server
# Arch Linux
sudo pacman -S openssh
安装完成后,系统会自动创建一个名为sshd的服务单元,并生成必要的密钥文件。
三、配置SSH服务
SSH的主要配置文件位于/etc/ssh/sshd_config。以下是一些常见的配置项及其建议值:
Port 22
PermitRootLogin no
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
Port:修改默认端口可提高安全性,如改为2222。PermitRootLogin:禁用root直接登录以提升安全性。PasswordAuthentication:若使用密钥认证,建议设为no。
四、启动并启用sshd服务
使用systemd管理系统启动并设置开机自启:
sudo systemctl start sshd
sudo systemctl enable sshd
检查服务状态是否正常运行:
sudo systemctl status sshd
五、配置防火墙规则
确保系统防火墙允许SSH流量通过。以下是几种常见系统的配置方式:
# Ubuntu UFW
sudo ufw allow OpenSSH
sudo ufw enable
# CentOS firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
# iptables(传统)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables-save > /etc/iptables/rules.v4
六、测试连接与排错流程图
graph TD
A[本地终端] --> B{能否ping通目标IP?}
B -->|否| C[检查网络连接]
B -->|是| D{能否telnet目标IP 22端口?}
D -->|否| E[检查防火墙规则]
D -->|是| F[尝试SSH连接]
F --> G{连接失败?}
G -->|是| H[查看/var/log/secure日志]
G -->|否| I[成功连接]
七、高级配置与安全加固
为了进一步增强安全性,可以考虑以下措施:
使用SSH密钥认证代替密码登录限制允许登录的用户列表:AllowUsers user1 user2设置登录失败次数限制(结合fail2ban)关闭不必要的选项如X11转发等