背景

运维不再允许ssh直连目标主机, 要求必须通过堡垒机(jumpserver)来访问.

痛点

之前配置的密钥自动登录失效了;必须每次手动登录堡垒机,然后再登录目标主机.

目标

像以前使用密钥自动登录一样登录目标主机
直接从本地scp文件到目标主机

在开始步骤前,先理解两个命令:

  • ssh-add: 把专用密钥添加到ssh-agent的高速缓存中
  • ssh_config 的 ProxyCommand: 指定连接服务器的命令(详细描述自查)

步骤

1. 实现无密码登录堡垒机

  • 修改 ~/.ssh/config, 指定堡垒机的登录配置, 增加内容如下:
Host jumpserver
    Hostname <jumpserver ip>
    Port <jumpserver port>
    User <jumpserver username>
    IdentityFile <jumpserver private key>
  • 将堡垒机私钥加入ssh-agent
ssh-add <jumpserver private key>
#提示输入密钥的密码时,输入后确认

2. 像原来无密码登录目标主机一样, 将公钥加入~/.ssh/authorized_keys

无密码登录不在赘述,请自查

3. 配置堡垒机做代理,登录目标主机; 打开 ~/.ssh/config,增加内容如下

host <target host alias>
    Hostname <jumpserver ip>
    Port <jumpserver host>
    User <jumpserver username>
    ProxyCommand ssh <jumpserver username>@<target ip> -W %h:%p

4. 直接使用

ssh <target host alias>
scp <source file> <target host alias>:~/

tips:

堡垒机登陆以后, 直接在堡垒机上创建本机用户无密码登录localhost, ssh -NL 2222:localhost:22 localhost;

把之前的22端口转发到2222端口, 以后使用 2222 端口登陆, 就绕过堡垒机了