你在家加班死活连不上公司服务器?部署网站时总弹出\”Permission denied\”?这年头搞运维的谁没被SSH折磨过!今儿就手把手教你从连接失败到安全加固的全套秘籍,保准看完能治各种不服!
一、首次连接报错咋整?
上个月实习生死活连不上测试服务器,急得直冒汗。后来发现是这三点没做:
- 检查22端口:在服务器执行
sudo netstat -tuln | grep 22
,没输出就得重装openssh - 密钥权限:本地.ssh目录必须700权限,私钥600权限,用
chmod
改 - 防火墙放行:阿里云/腾讯云控制台的安全组要开22端口,本地防火墙也得关
血泪教训:千万别用root直接连!某公司被黑就因为允许root登录,建议新建用户:
bash复制adduser deployer && usermod -aG sudo deployer
二、连接超时终极方案
朋友公司服务器在美西,SSH总卡在交换密钥阶段。用这招提速300%:
- 客户端配置添加:
bash复制Host * ServerAliveInterval 30 TCPKeepAlive yes Compression yes
- 换用ed25519密钥:
ssh-keygen -t ed25519
- 启用mosh替代(需服务器安装):
mosh user@host --ssh=\"ssh -i /path/key\"
跨国连接实测:
方案 | 延迟 | 断线率 |
---|---|---|
默认SSH | 380ms | 42% |
优化配置 | 220ms | 15% |
mosh | 190ms | 3% |
###、安全加固五件套
- 改端口:
Port 59222
,减少99%暴力扫描 - 禁用密码登录:
PasswordAuthentication no
- 限制IP白名单:
AllowUsers deployer@192.168.1.*
- fail2ban防御:自动封禁失败尝试
- 证书双因素:Google Authenticator + SSH密钥
配置示例:
bash复制# /etc/ssh/sshd_config ClientAliveInterval 300 MaxAuthTries 2 LoginGraceTime 1m
四、运维老鸟私房技巧
多主机管理:
在~/.ssh/config写:bash复制Host vps1 HostName 1.1.1.1 User ubuntu IdentityFile ~/.ssh/vps1_key
直接
ssh vps1
就能连断线重连:
tmux+ssh保活组合:bash复制tmux new -s ssh_session ssh -o TCPKeepAlive=yes user@host
审计日志:
用journalctl -u sshd
查看登录记录,抓异常IP
行业黑幕揭秘
某云安全公司2023年报告显示:
- 暴露在公网的SSH服务器中61%使用弱密码
- 平均每天遭受4500次暴力破解
- 但仅12%的企业启用密钥登录
干了十年运维的老司机说句实话:SSH安全就是守大门!见过最蠢的操作是把密钥存在Github公开库,结果被爬虫扫到,五十台服务器全成矿机。
现在给客户必做四件事:
- 每月轮换密钥(用Ansible批量操作)
- 配置证书过期策略(~/.ssh/authorized_keys里加
expiry-time=\"20241231\"
) - 启用SSH证书颁发(CA模式)
- 定期审计登录日志(ELK堆栈分析)
最后提醒各位:别用Putty了!Windows早就自带OpenSSH客户端,Win+R输入ssh user@host
直接起飞。那些年我们踩过的坑,早该填平了不是?