SSH 的 8 大黑科技玩法
今天咱们来聊聊 SSH 的 8 大黑科技玩法!🐯
SSH要说它最核心的作用,就是为远程登录提供加密连接,但只要你用得好,它完全可以帮你搞出花来。今天我就来扒一扒 SSH 的那些骚操作!😉
一、SSH Key 生成:免密登录 so easy!
大多数人接触 SSH 的第一步,就是生成 SSH 密钥来免密登录。想象一下,每次登录服务器都要输入密码,多麻烦!所以我们生成一个公钥和私钥,让机器帮我们记住。
用这条命令生成密钥对:
ssh-keygen -t ecdsa -b 256 -C "[email protected]"
解析:
-t ecdsa:指定密钥算法为 ECDSA。-b 256:密钥长度(更大则更安全)。-C "[email protected]":为公钥加个注释。
生成的密钥对会有两个文件,id_ecdsa(私钥)和 id_ecdsa.pub(公钥)。接着,你只需把公钥上传到服务器的 ~/.ssh/authorized_keys 文件里,之后就可以直接登录啦!
敲键盘的时间都省下来了,是不是美滋滋?🍺
二、SSH 配置文件:懒人必备配置
对于经常连接多个服务器的老铁们,手动输入 IP、用户名实在太低效。这时候 SSH 的配置文件就派上用场了!打开 ~/.ssh/config,写入一些规则让连接变得更智能。
示例配置:
Host my-server
HostName 192.168.1.1
User root
IdentityFile ~/.ssh/id_ecdsa
Port 22
解读:
Host:自定义一个主机名,简化记忆。HostName:目标服务器的 IP 地址。User:默认登录用户名。IdentityFile:指定密钥文件。Port:指定端口。
写完配置,后续直接敲 ssh my-server 就连上去了。再多的服务器也不怕,因为我们可以随意加多个 Host 配置,干活更省力了。
三、黑科技配置项:玩转 SSH 的高级玩法
SSH 的配置项多得数不清,挑几个关键的给大家展示展示。
AddKeysToAgent:自动将密钥加入到 ssh-agent。
AddKeysToAgent yes这样一来,免密登录会更轻松。
ControlMaster/ControlPath:复用已有的连接。
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p在多终端打开同一服务器时复用连接,减少了握手开销,节省了时间⏳。
LocalForward/RemoteForward:本地/远程端口转发。
比如将远程数据库映射到本地的端口:LocalForward 3306 localhost:3306直接在本地用图形界面操作远程数据库,爽啊!🍻
ProxyCommand:通过代理登录远程服务器。
有些公司喜欢层层防护,我们可以指定代理:ProxyCommand ssh -q jump-server nc -w 120 %h %p这样,我们就可以通过“跳板机”登录内网服务器,绕过防火墙限制。
四、多组密钥:分工明确,安心上线
经常玩 SSH 的人,手上可能不止一组密钥。比如,生产环境和测试环境的密钥最好分开用。我们可以用配置文件实现不同服务器不同密钥的管理。还是那个 ~/.ssh/config 文件:
Host prod-server
HostName 10.10.10.1
User admin
IdentityFile ~/.ssh/prod_keyHost dev-server
HostName 10.10.10.2
User admin
IdentityFile ~/.ssh/dev_key
一条命令走天下,登录起来超快超爽!🌈
五、远程文件编辑:编辑体验丝滑流畅
还记得第一次用 vim scp:// 直接编辑远程文件时的震撼吗?这招让我们免去手动下载和上传文件的麻烦。只要在本地打开一个编辑器,输入路径就能编辑远程文件。
vim scp://user@server//path/to/file
编辑完直接保存,自动同步到服务器,顺滑如丝💫。别的编辑器也能用,比如 VS Code 的 Remote - SSH 插件,支持直接编辑远程文件,代码党的福音。
六、将远程服务当成本地服务
这招我很喜欢!可以把远程数据库、Redis 端口映射到本地,仿佛它们就在自己电脑上。开发和测试方便得不行:
ssh -L 3306:localhost:3306 user@remote-server
配置完成后,本地连 localhost:3306 就等于连远程数据库了。爱咋测咋测,数据就在眼前。📊
七、反向端口转发:逆天操作本地调试
反向端口转发对内网穿透调试特别有用。假设本地的应用需要测试线上环境的连接,而线上机器没权限访问你的本地机器?没事,我们用反向端口转发来解决!🎩
ssh -R 9000:localhost:3000 user@remote-server
这个命令的意思是,让远程服务器的 9000 端口可以访问到我们本地的 3000 端口。这样,线上服务就可以通过 localhost:9000 来访问你的本地应用了。
八、远程命令执行:一条命令走遍天下
有时候需要快速在远程服务器上执行命令,但又懒得登录,怎么办?用 SSH 一条命令轻松搞定!
ssh user@remote-server 'df -h'
这里我们执行 df -h 来查看磁盘空间。更复杂的任务也可以这样做,比如一次性更新多个服务器的文件。对于运维、开发和测试来说,简直不能再香了。💻
掌握这些小技巧后,真的会爱上 SSH。以后无论是调试、部署还是日常操作,SSH 都能带来效率飞升的快感。
对编程、职场感兴趣的同学,大家可以联系我微信:golang404,拉你进入“程序员交流群”。
资料包含了《IDEA视频教程》、《最全python面试题库》、《最全项目实战源码及视频》及《毕业设计系统源码》,总量高达650GB。全部免费领取!全面满足各个阶段程序员的学习需求。