大多数 Linux 发行版默认已安装 OpenSSH 客户端,但服务器端可能需要手动安装。
安装软件包根据你的发行版使用对应的包管理器:
| Ubuntu / Debian | sudo apt update && sudo apt install openssh-server |
| CentOS / RHEL | sudo yum install openssh-serversudo dnf install openssh-server |
| Fedora | sudo dnf install openssh-server |
启动并启用服务安装完成后,需要启动服务并设置开机自启:
# 启动 SSH 服务
sudo systemctl start ssh # Debian/Ubuntu (部分旧版用 sshd)
sudo systemctl start sshd # CentOS/RHEL
# 设置开机自启
sudo systemctl enable ssh
sudo systemctl enable sshd
# 检查状态 (看到 active (running) 即成功)
sudo systemctl status ssh
SSH 服务的核心配置文件位于 /etc/ssh/sshd_config。修改此文件前,强烈建议先备份:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
使用编辑器(如 nano 或 vim)打开配置文件:
sudo nano /etc/ssh/sshd_config
常用配置项修改:
#Port 22 修改为其他端口(如 Port 2222),可以大幅减少针对 22 端口的暴力破解尝试。PermitRootLogin yes 改为 no,使用普通用户登录后再切换身份。ListenAddress 限制 SSH 只在特定 IP 上监听。修改完成后,必须重启服务使配置生效:
sudo systemctl restart ssh
使用密钥登录比密码更安全,且可以实现免密登录。
生成密钥对在你的本地电脑(或作为客户端的服务器)上执行:
# 推荐使用 Ed25519 算法(更安全高效)
ssh-keygen -t ed25519 -C "your_email@example.com"
# 或使用兼容性更好的 RSA 算法
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
上传公钥到服务器生成密钥后,需要将公钥(.pub 文件内容)复制到服务器。方法 A(推荐,最简单):
ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip -p 2222
方法 B(手动复制):将本地 ~/.ssh/id_rsa.pub 的内容复制,然后在服务器上执行:
# 确保 .ssh 目录存在且权限正确
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# 将公钥内容追加到 authorized_keys
echo"PASTE_YOUR_PUBLIC_KEY_HERE" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
完成上述步骤后,建议进行以下安全设置:
/etc/ssh/sshd_config,将以下选项改为 no,强制使用密钥登录:PasswordAuthentication no
ChallengeResponseAuthentication no
sudo ufw allow 2222/tcpsudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
# Ubuntu/Debian
sudo apt install fail2ban
# CentOS/RHEL
sudo yum install fail2ban
sudo semanage port -a -t ssh_port_t -p tcp 2222。