在Linux系统中搭建SSH服务器是远程管理服务器的常用方式,通过SSH协议可以安全地进行文件传输、命令执行等操作,以下是详细的搭建步骤及配置方法,适用于主流Linux发行版如Ubuntu、CentOS等。

安装SSH服务
-
检查是否已安装
在终端中输入以下命令检查SSH服务是否已安装:which sshd
如果返回路径(如
/usr/sbin/sshd)则表示已安装,否则需要安装。 -
安装OpenSSH服务器
- 基于Debian/Ubuntu系统:
sudo apt update sudo apt install openssh-server
- 基于RHEL/CentOS系统:
sudo yum install openssh-server # 或使用dnf(CentOS 8+) sudo dnf install openssh-server
- 基于Debian/Ubuntu系统:
-
启动并设置开机自启
安装完成后,启动SSH服务并设置为开机自启:
(图片来源网络,侵删)sudo systemctl start sshd sudo systemctl enable sshd
配置SSH服务
SSH服务的配置文件位于/etc/ssh/sshd_config,通过修改此文件可以调整服务器行为,以下是常用配置项:
| 配置项 | 默认值 | 说明 | 修改建议 |
|---|---|---|---|
| Port 22 | 22 | SSH监听端口 | 建议修改为非默认端口(如2222)以提高安全性 |
| PermitRootLogin yes | yes | 是否允许root用户直接登录 | 建议改为no,改用普通用户登录后切换至root |
| PasswordAuthentication yes | yes | 是否允许密码认证 | 可结合密钥认证改为no,仅允许密钥登录 |
| PubkeyAuthentication yes | yes | 是否允许公钥认证 | 建议启用,结合禁用密码登录提高安全性 |
| AllowUsers | 无 | 限制允许登录的用户 | 可指定用户列表(如AllowUsers user1 user2) |
修改配置示例:
- 备份原配置文件:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
- 编辑配置文件:
sudo nano /etc/ssh/sshd_config
- 修改关键项(如禁用root登录、修改端口等)后保存退出。
防火墙与SELinux配置
-
开放SSH端口
- Ubuntu(使用UFW):
sudo ufw allow 2222/tcp # 假设修改后的端口为2222 sudo ufw reload
- CentOS(使用firewalld):
sudo firewall-cmd --permanent --add-port=2222/tcp sudo firewall-cmd --reload
- Ubuntu(使用UFW):
-
关闭SELinux(如需)
在CentOS系统中,若SELinux启用可能阻止SSH连接,可临时关闭测试:
(图片来源网络,侵删)sudo setenforce 0 # 临时关闭
若需永久关闭,编辑
/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=disabled后重启。
生成SSH密钥对(客户端操作)
为提高安全性,建议使用密钥认证替代密码认证:
-
在客户端生成密钥对:
ssh-keygen -t rsa -b 4096
按提示指定密钥保存路径(默认
~/.ssh/id_rsa)和密码短语。 -
将公钥上传至服务器:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@服务器IP
输入用户密码后,公钥将自动添加至服务器的
~/.ssh/authorized_keys文件。
重启SSH服务并测试
-
重启服务使配置生效:
sudo systemctl restart sshd
-
测试连接:
ssh -p 2222 user@服务器IP
若使用密钥认证,应无需输入密码即可登录。
常见问题排查
-
连接超时或拒绝
检查防火墙是否开放端口、SSH服务是否运行(sudo systemctl status sshd),以及配置文件语法是否正确(sudo sshd -t)。 -
密钥认证失败
确认服务器端~/.ssh/authorized_keys文件权限为600,且所属用户正确:chmod 600 ~/.ssh/authorized_keys chown user:user ~/.ssh/authorized_keys
相关问答FAQs
Q1: 如何禁止所有用户通过SSH登录,仅允许特定用户?
A1: 编辑/etc/ssh/sshd_config文件,添加以下配置行并重启SSH服务:
AllowUsers user1 user2 # 仅允许user1和user2登录
DenyUsers * # 拒绝其他所有用户
Q2: 忘记SSH端口修改后的值,如何查看当前监听端口?
A2: 使用以下命令查看SSH服务监听的端口:
sudo ss -tulnp | grep sshd
或检查/etc/ssh/sshd_config文件中的Port配置项。
