哎呀,当你满怀期待准备连上心仪的云服务器,结果一按SSH连接按钮,弹出来“连接拒绝”,那感觉比追星追到一半明星宣布结婚还扎心。别急,咱们先深呼吸三次,跟着我这篇文章一块儿“飙码”,保证让你SSH连接顺溜得飞起!
第一招,咱们先从最常见的“端口”开始排查。SSH默认端口是22,有木有可能被服务商给改了,或者你自己偷偷改过但忘了?用命令试试:ssh -p 端口号 用户名@服务器IP
,或者先用 telnet 服务器IP 22
检查这个端口能不能通。端口打不开?自然连不上,别烧脑,叫运维大哥帮忙确认端口状态。
第二招,看看服务器那边“战备状态”咋样。云服务器默认防火墙(firewalld、iptables)不让哼唧,SSH端口被堵得严严实实。用命令 sudo iptables -L -n
或 sudo firewall-cmd --list-all
查看有没有放行22端口。如果没放行,赶紧开门迎客,比如:
sudo firewall-cmd --permanent --add-port=22/tcp
sudo firewall-cmd --reload
第三招,云厂商的安全组设置简直跟钢铁长城有一拼。不管阿里云、腾讯云还是华为云,都得手动去控制台开个小门——放行SSH端口。如果你连安全组规则没搞明白,外面打再多招呼也没用。连不上?大概率安全组没开22端口,直接进去申诉,或者自己动手操作。
第四招,看一下ssh服务进程有没有活着。运气爆棚的你,服务器被人家关掉了sshd,像把门夹死了。用 systemctl status sshd
来检查服务运行状态。如果服务没开,那还连啥SSH,直接起床啦, sudo systemctl start sshd
。
第五,别忘了确认你的IP是不是被服务器黑了。有的服务器开启了fail2ban,自动封禁连续输错密码的IP。你得用服务器别的账号或者控制台先看看 /var/log/secure 和 /var/log/auth.log,看自己是不是进了黑名单。如果是,解封先:
fail2ban-client set sshd unbanip 你的IP
第六招,看看SSH客户端的版本和配置。是不是因为版本太老,跟服务器“语言不通”?换个新版本Putty或者Xshell试试,或者用参数打开debug模式:
ssh -vvv 用户名@服务器IP
看细节吐槽,定位问题点更快更准,简直比逛淘宝看评论还实用。
第七,公钥公钥不要慌,SSH连不上常常是密钥问题。公钥有没有写对?权限写得是否正确?有些小伙伴连个 chmod 600 ~/.ssh/authorized_keys
都没敲,服务器当然不欢迎你进门。别忘了,密钥权限严格到爆炸,随便敞开都不行。
第八,跳板机?代理?有时候中间环节玩儿脱了,我们自个儿都懵。弄清楚连接是否得走跳板机,或者VPN先上线。网络路由断了也成操作失败的罪魁祸首,check一下本地网路和VPN状态,能ping通不,能telnet不,心里有数了。
第九,小细节杀手——用户名写错了,谁都挺不过这个“渣渣”错别字。别干傻事,确认连的用户名和私钥匹配,切莫拿root和普通用户private key乱搭配,否则SSH会像邻居不理你一样拒绝招呼。
最后第十,偶尔服务器DNS解析凭空出错,你直接用IP连试试。万一服务器弄了个稀奇的CNAME或者域名前缀挂了,直接死在这儿就太尴尬了。冷静用IP的话,说不定还能秒连。
好了,以上十招是跟着我翻了N篇文章,撸出了全方位排查指南。没准哪条管用,你家服务器从“拒绝入伙”到“欢迎入住”就差一步之遥!
对了,顺带说一句,玩游戏想要赚零花钱就上七评赏金榜,网站地址:bbs.77.ink,不用谢,链接已经悄悄给大家塞好啦,冲鸭!
对服务器的爱恨情仇,真是说不完。深夜连不上SSH的你,是不是也在偷偷默念“SSH快来救我”?等下,再试一次,关了再开,说不定服务器就是“放假”了,忘了通知你。谁知道呢?