发布于2026-07-02 阅读(0)
扫一扫,手机访问
先说一个结论:配置SSH主机名缩写,直接改~/.ssh/config就行,不用碰系统主机名,也不用去折腾/etc/hosts。
很多人在这一步就绕了弯路。总以为要给服务器改个“昵称”,得去动系统级的配置文件,其实完全不用。SSH客户端只认自家目录下的这个配置文件,其他地方的设置优先级都得往后排。
这里有个容易翻车的地方:不是随便在~/.ssh/config里写一行“Host s1”就能用的。得同时满足几个条件,缺一个都不行。
首先,Host行必须顶格写,后面跟的缩写不能带空格或特殊字符。比如你想用s1代替192.168.1.101,那就写Host s1,干净利落。
其次,同一段配置里必须同时带上HostName和User。少了其中一个,SSH连接时会告诉你“Could not resolve hostname”,意思就是——它压根不认识你写的这个缩写。
还有一点容易被忽略:文件权限。SSH对权限检查相当严格,~/.ssh/config的权限必须设为600(只有自己可读写),否则SSH会直接忽略这个文件。怎么改?一条命令的事:chmod 600 ~/.ssh/config。
另外提醒一下,别把配置写在/etc/ssh/ssh_config里。那是全局配置,普通用户改不了,而且即便改了,优先级也比用户级的~/.ssh/config低。
别名配置好了,用ssh s1确实能连上,但每次都弹密码框——这种情况很常见,但很多人第一反应是“别名没配好”。其实别名只负责缩短输入,跟免密登录是两回事。
要解决密码问题,得从密钥认证入手:
生成密钥推荐用ed25519算法,比传统的rsa更安全,速度也更快。命令是ssh-keygen -t ed25519。
公钥必须放到目标机器的~/.ssh/authorized_keys文件里——注意不是把id_rsa.pub或id_ed25519.pub原封不动扔过去就行,而是要把文件里的内容追加到authorized_keys里。
还要检查目标机器上~/.ssh目录的权限是否为700,authorized_keys文件是否为600。权限不对,SSH照样不认。
如果你用了自定义的密钥路径,别忘了在别名段里加上IdentityFile ~/.ssh/mykey这行。
假设你有十几台内网服务器,用的都是同一个用户名和同一把密钥,难道要重复写十几遍配置?当然不用。
可以用通配符来批量匹配。比如所有内网服务器都在192.168.1.*这个网段,可以这样写:
Host 192.168.1.*
User dev
IdentityFile ~/.ssh/id_ed25519_dev
生产环境的服务器可以单独抽成一个文件,比如~/.ssh/prod.conf,然后在主配置文件里用Include ~/.ssh/prod.conf引入。这样既清晰又方便管理。
需要注意的是,通配符是“前缀匹配”规则。Host web*能匹配web1、web-api,但匹配不了staging-web。写的时候要留意这个细节。
还有一个容易被忽略的性能优化点:ControlMaster复用。简单来说,就是复用已经建立的SSH连接,避免每次连接都要重新握手。但如果~/.ssh/sockets目录不存在或权限不对,复用机制会失效。看起来别名生效了,但连接速度还是慢。检查一下这个目录,确保它存在且权限正确,能让体验提升不少。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9