SSH连上服务器的第一件事,不是立刻装环境,而是先给这台机器“换锁、设密码、关后门”,再做基础配置和日常防护。
很多人拿到一台VPS或云主机,习惯性输入root密码就登录,接着装宝塔、跑脚本,结果没两天服务器被植入挖矿程序,问题就出在第一步你用的是默认密码、默认端口,SSH服务完全裸奔在公网上,下面这套流程照着走,十分钟就能让服务器进入安全状态。
安全加固:动手配置前的第一道防线
修改root密码并创建普通管理员用户
服务器到手第一件事,立即修改root密码,云厂商控制台初始密码强度往往不够,部分厂商甚至使用固定初始密码,同一批次机器可能通用一个密码,执行passwd root,输入高强度新密码,至少12位,包含大小写字母、数字和特殊符号。
接着创建一个日常使用的普通用户:
useradd -m -s /bin/bash admin passwd admin usermod -aG sudo admin
sudo组赋予管理员权限,平时登录用这个账号,需要提权时执行sudo su -,这样做的好处是,即使这台机器被拿下,黑客拿到的也只是普通用户权限,破坏面小很多。
ssh密钥登录配置实操步骤
密码登录存在暴力破解风险,密钥登录是当前最稳妥的认证方式,本机执行以下命令生成密钥对:
ssh-keygen -t ed25519 -C "your-email"
一路回车就行,然后把公钥推送到服务器:
ssh-copy-id admin@你的服务器IP
没有ssh-copy-id命令的环境,手动粘贴公钥:
mkdir -p ~/.ssh echo "粘贴你的公钥内容" >> ~/.ssh/authorized_keys chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
修改SSH配置文件/etc/ssh/sshd_config,确认以下参数:
PubkeyAuthentication yes PasswordAuthentication no
改完执行systemctl reload sshd让配置生效。千万别急着关当前会话,先新开一个终端窗口验证密钥能正常登录,再退出旧会话,关掉密码登录后,丢失私钥就等于丢失服务器,私钥文件建议多重备份。

修改SSH端口并禁止root直连
默认22端口每天都在被全球扫描器探测,修改端口是最直接有效的隐藏手段,编辑/etc/ssh/sshd_config:
Port 22026 PermitRootLogin no
重启SSH服务后,登录命令变为:
ssh -p 22026 admin@你的服务器IP
选择端口时避开常用服务端口,比如80、443、3306,也别用2222这种常见替代端口,随机选一个四位数或五位数更安全,公网防火墙同步放行新端口,删除22端口入方向规则。
基础环境:让服务器能“干活”的四件套
安全搞定后,开始配置运行环境,这一截是后续安装软件的基础,顺序别乱。
更新系统源和软件包
刚买来的系统镜像大多滞后半年以上,先跑一遍更新:
# Debian/Ubuntu系统 apt update && apt upgrade -y # CentOS/RedHat系统 yum update -y
内核更新后建议重启一次reboot,让新内核和驱动生效。
给低配机器补swap交换分区
1G内存以下的小机器,跑编译任务和数据库时极易内存耗尽直接OOM,手动补一个2G的swap文件:
fallocate -l 2G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile echo '/swapfile none swap sw 0 0' >> /etc/fstab
验证是否生效:free -h,看到Swap行有数值就说明挂载成功。
安装常用工具并校准时间
列表式安装一批必备软件:
curl和wget:下载文件、测试接口git:拉取代码vim:文本编辑,默认vi对新手不友好ufw:简单防火墙工具htop:实时监控资源占用net-tools:提供netstat等网络排查命令
时区校准很关键,日志时间和真实时间错位,排查问题时会疯掉:
timedatectl set-timezone Asia/Shanghai
如果你有NTP同步需求,再装一个chrony,多数云厂商镜像默认已带。

服务器运维面板:宝塔和1Panel怎么选
很多新手喜欢装面板管理服务器,省事但也要选对,当前市场宝塔和1Panel是两款主流选择,但适用人群和部署方式差异明显,行业共识认为,个人站长和中小企业建站场景下,宝塔的LNMP/LAMP一键部署生态依然最成熟;而面向Docker和K8s的新型应用场景,1Panel开源无绑定,更占优势。
| 对比项 | 宝塔面板 | 1Panel |
|---|---|---|
| 部署方式 | 官方脚本按系统自动适配 | Docker容器化部署 |
| 资源占用 | 中等,约300-500MB | 较轻量,约200MB |
| 适合场景 | PHP建站、个人博客、传统业务 | Docker应用、境外业务、开发者 |
| 商业模式 | 部分功能付费 | 开源,社区版免费 |
| 安全口碑 | 历史漏洞较多,需及时更新 | 开源可审计,安全性更透明 |
需要建站怎么选
如果你的核心诉求是跑WordPress、Typecho或ThinkPHP项目,选宝塔准没错,它把Nginx/Apache、MySQL、PHP版本切换、SSL证书申请全部图形化了。安装命令在官网获取,注意核对脚本来源,不要从第三方博客复制整合过的命令。
纯开发环境怎么选
如果只是跑Node.js、Python后端,或不希望被面板绑定路径和目录结构,直接裸环境操作,1Panel可以装,但不装面板也更简洁,服务器本质是一个Linux环境,熟练使用命令行之后,面板反而拖慢操作效率。
常见连接问题排查
vps购买后ssh连不上?从这三步查起
新买的VPS连不上,九成是云厂商安全组没放行端口,登录云控制台,找到安全组或防火墙配置,添加入方向规则:
- 协议:TCP
- 端口:你的SSH端口(默认22)
- 来源:0.0.0.0/0
第二步检查服务是否启动:systemctl status sshd,看到active (running)才正常,第三步看监听地址:ss -lntp | grep sshd,监听0.0.0:22才能对外服务,如果只监听127.0.0.1就说明配置不对。

ssh连接服务器超时怎么办
超时和“拒绝连接”是两回事,超时说明网络包根本没到服务器或被拦截,拒绝连接说明网络通但服务异常,超时排查顺序:
- 本地执行
ping 服务器IP,看是否有响应 - 用
tcping或telnet 服务器IP 22测试端口通断 - 确认当前网络是否对海外VPS不友好,换一个网络环境试试
ssh连接慢的根因分析
连上后输入密码卡顿好几秒,多半是DNS反向解析惹的祸,编辑/etc/ssh/sshd_config:
UseDNS no GSSAPIAuthentication no
这两项关闭后重启sshd,连接速度立竿见影,如果你本地到服务器延迟本来就高,还可以在客户端配置长连接心跳:
# 在 ~/.ssh/config 中加入
Host
ServerAliveInterval 30
一套操作下来,服务器才算真正属于你
从修改密码到密钥登录,从关端口到调时区,这套流程十五分钟能走完。很多服务器被入侵的案例,死因都相同:默认端口、弱密码、开着root登录。 这三道坎迈过去,你就已经跑赢相当一部分服务器用户了。
Q&A
ssh连接时提示connection refused是什么原因
最直接的三个可能性:sshd服务未启动、防火墙拦截了端口、你连的端口和实际监听端口不一致,分别检查systemctl status sshd、ufw status和ss -lntp输出即可定位。
ssh密钥登录配置好后密码还能登录是什么原因
sshd_config中PasswordAuthentication为no才能禁密码,同时检查ChallengeResponseAuthentication或KbdInteractiveAuthentication是否仍为yes(对应新版OpenSSH的KbdInteractiveAuthentication),设为no后执行systemctl reload sshd,最后用新窗口验证登录方式。
服务器上多个用户同时在线怎么查看
who命令列出所有登录用户及其来源IP,w命令额外展示每个用户当前执行的命令和负载信息,发现异常IP连接时,执行pkill -u 用户名可以强制踢下线。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/865252.html


评论列表(3条)
读了这篇文章,我深有感触。作者对修改的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!
@大光8059:这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于修改的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!
@大光8059:读了这篇文章,我深有感触。作者对修改的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!