背景
运维不再允许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 端口登陆, 就绕过堡垒机了