启用SSH服务的核心在于正确安装OpenSSH软件包、配置防火墙放行策略以及确保SSH守护进程处于运行状态。绝大多数现代Linux发行版已预装SSH组件,若无法连接,通常是因为服务未启动或防火墙拦截了22号端口,对于Windows服务器,则需通过“可选功能”手动安装OpenSSH服务器并启动服务,启用过程必须遵循安全最小化原则,修改默认端口并禁用root远程登录是生产环境的标准操作规范。

Linux环境启用SSH的专业操作流程
Linux系统因其开源特性,SSH服务通常基于OpenSSH实现,不同发行版的包管理器存在差异,操作指令需对症下药。
检查与安装OpenSSH服务
首先需要验证系统是否已安装SSH服务,在终端输入指令检查状态。
- Debian/Ubuntu系列:使用
dpkg -l | grep openssh-server检查,若未安装,执行sudo apt update更新源,随后执行sudo apt install openssh-server完成安装。 - CentOS/RHEL系列:使用
rpm -qa | grep openssh-server检查,缺失时,执行sudo yum install openssh-server进行安装。
启动服务并设为开机自启
安装完成后,服务默认可能处于停止状态,必须手动启动并加入系统启动项,确保服务器重启后SSH服务自动恢复。
- 使用
systemctl start sshd或service sshd start启动服务。 - 执行
systemctl enable sshd设置开机自启。 - 通过
systemctl status sshd确认状态,屏幕显示“active (running)”字样即代表服务正常运行。
防火墙策略配置
这是新手最容易忽略的环节,即使SSH服务启动,防火墙若未放行,外部连接请求仍会被拒绝。
- Ubuntu系统:默认使用UFW防火墙,执行
sudo ufw allow ssh或sudo ufw allow 22放行端口,随后sudo ufw enable启用防火墙。 - CentOS 7+系统:使用Firewalld,执行
firewall-cmd --permanent --add-service=ssh,若修改了端口,则需执行firewall-cmd --permanent --add-port=端口号/tcp,最后firewall-cmd --reload重载配置。
Windows服务器启用SSH的实战步骤
Windows Server原生支持OpenSSH,但需手动开启,相比Linux,Windows的配置更侧重于服务管理器的图形化操作与PowerShell指令的结合。
安装OpenSSH服务器
通过PowerShell管理员模式进行安装是最快捷的方式。
- 输入
Get-WindowsCapability -Online | Where-Object Name -like OpenSSH.Server检查安装状态。 - 执行
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0进行安装,安装过程需等待几分钟,视网络情况而定。
启动并配置服务

安装后,Windows不会自动启动SSH服务。
- 在服务管理器中找到“OpenSSH SSH Server”,将启动类型修改为“自动”,并点击“启动”。
- 或在PowerShell中执行
Start-Service sshd及Set-Service -Name sshd -StartupType 'Automatic'。
防火墙确认
Windows安装OpenSSH通常会自动创建入站规则,若无法连接,需检查“高级安全Windows Defender防火墙”中是否存在名为“OpenSSH-Server-In-TCP”的规则,确保其已启用且应用于域、专用和公用网络配置文件。
安全加固与配置优化
仅仅启用SSH是不够的,暴露在公网的22端口极易遭受暴力破解攻击。在解决服务器怎么启用ssh的同时,必须同步实施安全加固方案。
修改默认端口
攻击脚本通常默认扫描22端口,修改为高位端口(如22222或49154)能有效规避大部分自动化扫描。
- 编辑配置文件:Linux位于
/etc/ssh/sshd_config。 - 找到
#Port 22行,去掉注释并修改为新端口。 - 修改后务必同步更新防火墙规则,否则将导致连接中断。
禁用Root远程登录
Root权限过大,一旦密码泄露后果不堪设想。
- 在
sshd_config中将PermitRootLogin yes修改为PermitRootLogin no。 - 建议创建普通用户并配置
sudo权限,通过普通用户登录后再切换至root操作。
密钥对认证替代密码
密码认证存在被猜解风险,生成RSA或ED25519密钥对,将公钥上传至服务器~/.ssh/authorized_keys文件,并在配置文件中禁用PasswordAuthentication,这是最高级别的安全防护措施。
连接测试与故障排查逻辑
配置完成后,使用SSH客户端进行连接测试。

基础连接指令
在客户端终端输入ssh username@server_ip,若修改了端口,使用ssh -p port_number username@server_ip。
常见故障排查
- Connection refused:服务未启动或端口错误,检查
sshd进程状态。 - Connection timed out:网络不通或防火墙拦截,使用
telnet ip port测试端口连通性,检查云服务商的安全组设置。 - Permission denied:密码错误或密钥权限问题,检查服务器端
/etc/ssh/sshd_config配置及用户目录权限。
云服务商安全组
对于阿里云、腾讯云等云服务器,仅配置系统内部防火墙是不够的,必须在控制台的安全组入站规则中放行相应端口,这是云环境特有的网络隔离层,常被运维人员忽视。
相关问答
SSH服务启动后,客户端连接提示“Connection refused”怎么办?
这种情况通常由三个原因导致:一是SSH服务进程未真正运行,建议使用netstat -tulnp | grep 22查看端口是否被监听;二是配置文件sshd_config存在语法错误,导致服务启动失败,可通过sshd -t命令检测配置文件语法;三是端口被修改但客户端仍尝试连接默认22端口,需确认配置文件中的端口与客户端连接端口一致。
如何在不重启服务器的情况下使SSH配置生效?
修改SSH配置文件后,无需重启整个服务器,只需重启SSH服务即可,在Linux系统中执行systemctl restart sshd或service sshd restart,建议在重启服务前,保持当前会话不断开,另开一个终端窗口尝试连接,以防配置错误导致彻底无法登录服务器。
如果您在配置过程中遇到其他问题,或有独特的安全加固技巧,欢迎在评论区留言交流。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/109691.html