你有没有遇到那种“Connection timed out” 让你懵逼到想直接把电脑关机的情况?别急,阿里云连接服务器的坑确实比想象中多得离谱,今天就把坑点拆开,玩得像拆手机壳一样轻松。先别想,先看行。
首先要确认你在阿里云控制台下的安全组规则到底是咋设置的。别把“允许全部来源”这个大手术写进安全组,万一你把端口暴露给了全世界,结果就是被抢云堡垒的那一瞬间。只给22、80、443这几个必要端口开放,并且限定来源 IP。填了条例后,别忘了别哪里改楼下客厅的路由器,云端还是要靠自己挡。
其次,云主机的网络出口有两个层面:公网 IP 和弹性 IP。后台分别走两条路,导致你用弹性 IP 连接但安全组却没写相应规则,或者你想把公网 IP 擦成新的 VPC 子网都忘了。改线路就像换门锁,要先把防火墙开关全挪对应的款式。有的老手会直接粘到个 GT-404 的脚本,直接把 NAT 设置成最宽松,结果 3 分钟后都被 LOL 变成了“黑客大王”。
再说说 SSH key。你得确保本地的公钥完整复制到了实例的 `/root/.ssh/authorized_keys` 文件里。别因为粘贴过程中卡顿导致出现多余空格,要记得控制台的输出会给你写对“input file” 的正文,还能给你自动纠错。若 ssh 报 `bad key` 只要把文件里所有行改成 `ssh-rsa AAAAB3…` 的格式,记得不要乱加新行。为防万一,最好直接用 `ssh-copy-id root@ip` 的方式来操作。
说到 SSH 还有一个常被忽略的点:`/etc/ssh/sshd_config` 里把 `AuthorizedKeysFile` 背景设置了别名,导致系统找不到。重启 sshd 之后改一遍,或者直接贴上 `PubkeyAuthentication yes`。别像追剧时把剧本乱改,后面改回来就会让你笑着问“我到底改了啥?”
至于原因到底是什么,最有效的排查步骤是先跑个命令:`telnet
有时候你会想,“我是不是没单独给实例分配弹性网卡?”别着急,阿里云早已把默认网卡设置标注了保守的安全策略,外部访问需要 2 步:先确认公网 IP,然后检查安全组、路由、NAT 网关。要是你把 NAT 网关给设成私网,那外网根本是进不去的。
更别说把实例挂在私有子网了。那你只能用 VPN 或者 Bastion Host 之类的方式拿到桥