连载中 15/20

SSH 必修课:免密登录、config 别名与一条隧道进内网

2026-10-19 · 30 阅读 · 0 评论 · 0 赞

密钥免密:一次配置,终身受益

# 1. 本机生成密钥对(一路回车即可)
$ ssh-keygen -t ed25519

# 2. 把公钥追加到目标服务器的 authorized_keys
$ ssh-copy-id app@192.168.2.105

# 3. 之后登录不再要密码
$ ssh app@192.168.2.105

原理一句话:公钥是锁、私钥是钥匙——公钥(.pub)放服务器上,私钥留在自己电脑,登录时服务器用公钥出题、私钥作答,全程不传密码。注意第 9 篇的规矩:~/.ssh/id_ed25519 私钥权限必须是 600。

config 别名:把一长串变成一个词

# ~/.ssh/config(没有就新建,权限 600)
Host prod-note
    HostName 192.168.2.105
    User app
    Port 22
    IdentityFile ~/.ssh/id_ed25519

Host jump
    HostName 47.98.x.x
    User app
    Port 2222

配置之后,ssh prod-note 一词直达,scp、rsync 也都认这个别名。机器超过三台还手敲 IP 端口的,请立刻补上这份配置。

传文件:scp 与 rsync

$ scp note.jar prod-note:/opt/app/          # 本机 → 服务器
$ scp prod-note:/var/log/app/error.log ./   # 服务器 → 本机
$ scp -r conf/ prod-note:/opt/app/conf/     # 递归传目录

$ rsync -avz --progress conf/ prod-note:/opt/app/conf/
# rsync 增量同步:只传差异,断点可续,大量文件首选

端口转发:把内网数据库搬回家

生产 MySQL 只监听内网,本地工具连不上?SSH 隧道(本地转发 -L)一步解决:

$ ssh -L 13306:192.168.2.105:3306 prod-note -N
#        ↑本地口    ↑数据库在内网的地址:端口   ↑只做转发不开shell

# 之后本地连 127.0.0.1:13306,等于连上内网 3306
# Navicat / DBeaver 主机填 127.0.0.1,端口 13306

数据全程在 SSH 加密隧道里走,不用给数据库开任何公网端口——这是跳板机架构里最常用的一招。

服务端的两条安全底线

# /etc/ssh/sshd_config
PermitRootLogin no        # 禁 root 直接登录(先建好普通账号再改)
PasswordAuthentication no # 只许密钥,密码爆破从此绝缘
$ systemctl reload sshd

改之前务必确认新通道能登录再断旧连接,否则就是自己把钥匙锁屋里。下一篇:环境变量与 shell 配置——PATH 为什么时灵时不灵,alias 能把长命令缩成三个字母。

☕
503

10 年全栈工程师 · 503咖啡馆主理人

#SSH#免密登录#ssh config#端口转发#rsync

评论 (0)

热门推荐

连载中 11/22

主从搭建实操:从零配出一主两从

光讲原理不过瘾?手把手搭一主两从:my.cnf 六个参数、复制账号、GTID、CHANGE REPLICATION SOURCE TO、SHOW REPLICA STATUS 验收,附翻车排查清单。

#MySQL#主从复制#GTID#主从搭建#高可用
2026-05-07 · 10114 阅读 · 0 评论 · 0 赞
连载中 16/22

连接池:HikariCP 参数与连接风暴

连接池不是越大越好:8 核机器配 1000 连接反而更慢的数学原理,HikariCP 四个必调参数,maxLifetime 与 wait_timeout 的隐形陷阱。

#MySQL#连接池#HikariCP#maxLifetime#连接风暴
2026-05-10 · 9877 阅读 · 0 评论 · 0 赞
连载中 4/16

缓存穿透:恶意 ID 打穿 MySQL 的四道防线

请求的数据在缓存和数据库里都不存在时,缓存形同虚设。聊聊参数校验、空值缓存、布隆过滤器、限流熔断四道防线的原理与组合打法。

#Redis#缓存穿透#布隆过滤器#高可用
2026-05-16 · 9307 阅读 · 21 评论 · 287 赞