ssh通过跳板机登录方法

1.密钥应该放在哪里

SSH 的密钥默认放在本地用户的 ~/.ssh/ 目录里,这是所有类 Unix 系统(Linux / macOS)的惯例位置。SSH 会自动从这个目录加载密钥,除非你明确指定 -i


2.ssh密钥目录结构

你的本地机器(不是跳板机,不是目标机)通常是这样的:

~/.ssh/
├── id_rsa               # 私钥(一定要保密)
├── id_rsa.pub           # 公钥
├── id_jump              # 跳板机专用私钥(可选)
├── id_jump.pub
├── id_target            # 目标机专用私钥(可选)
├── id_target.pub
└── config               # SSH 配置文件(可选但最推荐)
  • 私钥永远放在本地,不会上传到跳板机或目标机。
  • 上传到服务器的是 .pub 公钥,写入 ~/.ssh/authorized_keys

3.使用 -i 指定密钥时

例如:

1
2
3
4
ssh -i ~/.ssh/id_rsa \
-J jump_user@jump.example.com \
-L 8080:10.0.0.33:8080 \
target_user@10.0.0.33

上面命令中的 -i ~/.ssh/id_rsa 指向本地路径,不在跳板机上,也不在目标主机上。

SSH 链路中的两段认证情况如下:

Local(含私钥) → Jump(验证公钥)
Jump → Target(验证公钥)

跳板机和目标机都只需要公钥,不需要私钥。


4.多把密钥配置SSH config

Host jump
    HostName jump.example.com
    User jump_user
    IdentityFile ~/.ssh/id_jump

Host target
    HostName 10.0.0.33
    User target_user
    IdentityFile ~/.ssh/id_target
    ProxyJump jump
    LocalForward 8080 10.0.0.33:8080

之后执行:

ssh target

密钥加载、跳板机、端口转发全部自动完成。