检查22端口状态
在操作前,确认当前端口状态:
sudo ss -tuln | grep ':22'
- 若输出包含
LISTEN
,表示端口已开放;若无输出或显示UNCONN
,则需配置。
安装SSH服务
Ubuntu/Debian系统
sudo apt update && sudo apt install openssh-server -y
CentOS/RHEL系统
sudo yum install openssh-server -y
启动SSH服务
sudo systemctl start sshd # 立即启动 sudo systemctl enable sshd # 开机自启
配置防火墙开放22端口
使用ufw
(Ubuntu/Debian推荐)
sudo ufw allow 22/tcp # 允许TCP流量 sudo ufw reload # 重载规则
使用firewalld
(CentOS/RHEL推荐)
sudo firewall-cmd --permanent --add-port=22/tcp # 永久添加规则 sudo firewall-cmd --reload # 重载防火墙
使用iptables
(通用方法)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 临时允许 sudo iptables-save > /etc/iptables/rules.v4 # 永久保存(路径因系统而异)
验证端口是否开放
sudo systemctl status sshd # 检查SSH服务状态 sudo ss -tuln | grep ':22' # 确认端口监听 telnet 127.0.0.1 22 # 本地测试连接
安全加固建议
-
修改默认端口(可选)
编辑SSH配置文件:sudo nano /etc/ssh/sshd_config
修改
Port 22
为其他端口(如Port 2222
),重启服务:sudo systemctl restart sshd
同时更新防火墙规则(如
sudo ufw allow 2222/tcp
)。 -
禁用密码登录(推荐密钥认证)
在sshd_config
中设置:PasswordAuthentication no PubkeyAuthentication yes
-
限制访问IP
通过防火墙仅允许特定IP:sudo ufw allow from 192.168.1.100 to any port 22 # Ubuntu sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port=22 protocol=tcp accept' # CentOS
故障排除
- 连接被拒绝:检查SSH服务是否运行(
systemctl status sshd
)。 - 防火墙阻塞:临时关闭防火墙测试(
sudo ufw disable
或sudo systemctl stop firewalld
)。 - 端口冲突:确认无其他进程占用22端口(
sudo lsof -i :22
)。
打开22端口的核心步骤为:安装SSH服务 → 启动服务 → 配置防火墙,完成操作后,即可通过ssh username@服务器IP
远程连接。务必遵循安全建议,避免暴露未加固的端口到公网。
引用说明基于Linux官方文档(OpenSSH)及主流发行版防火墙指南(UFW、Firewalld),操作需Root权限,请谨慎修改配置。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/24388.html