其他分享
首页 > 其他分享> > 利用ssh穿越多个跳板机最简单最高效的办法

利用ssh穿越多个跳板机最简单最高效的办法

作者:互联网

【摘要】 对于云计算环境下多跳网络拓扑更为常见,一级一级ssh登录比较低效,拷贝文件更不方便了。本文描述一种方法,可对一个向上生长的树形跳板拓扑的任意节点,按自定义名字进行简单/直接/快速的ssh访问和scp/sftp等文件拷贝。

一般大家知道ssh可以用~/.ssh/{id_rsa, id_rsa.pub, authorized_keys}三个文件进行无密码登录远程ssh server进行命令行下的工作(若拷贝文件可以用scp/sftp)。但是对于云计算环境下多跳网络拓扑更为常见,一级一级ssh登录比较低效,拷贝文件更不方便了。本文描述一种方法,可对一个向上生长的树形跳板拓扑的任意节点,按自定义名字进行简单/直接/快速的ssh访问和scp/sftp等文件拷贝。 

1. 在每个节点产生公钥私钥对

2. 把本机公钥放到每一个直连下一跳的~/.ssh/authorized_keys

3. 作为访问起点的client需要额外设置

Host jumper1
  User <user_of_jumper1>
  Hostname <ip_of_jumper1>

Host jumper2a
  User <user_of_jumper2a>
  Port 2222
  Hostname <ip_of_jumper2a>
  ProxyJump jumper1

Host jumper2b
  User <user_of_jumper2b>
  Hostname <ip_of_jumper2b>
  ProxyJump jumper1

Host jumper3
  User <user_of_jumper3>
  Hostname <ip_of_jumper3>
  ProxyJump jumper2a

Host jumper4
  User <user_of_jumper4>
  Hostname <ip_of_jumper4>
  ProxyJump jumper2b

Host node1 n1
  User <user_of_node1>
  Hostname <ip_of_node1>
  ProxyJump jumper3

Host node2 n2
  User <user_of_node2>
  Hostname <ip_of_node2>
  ProxyJump jumper4

Host 192.168.103.*
  User <username_on_target>
  ProxyJump jumper4

4. 验证如下命令,应可以无密码执行

ssh node1
ssh n1
ssh node2
ssh n2
ssh 192.168.103.254
scp myfile node1:./
scp n1:./myfile /tmp/
sftp n2
sftp 192.168.103.2

5. client设置ControlMaster高速复用ssh连接

将如下加入到~/.ssh/config文件顶部,第一次ssh登录之后再次ssh登陆,几乎没有无延时。一段时间内重用连接不需要认证过程(对于密码登陆方式就是不要求输入密码了)

Host *
  ServerAliveInterval 10
  TCPKeepAlive yes
  ControlPersist yes
  ControlMaster auto
  ControlPath ~/.ssh/master_%r_%h_%p

6.增量同步远程机器的指定目录

lftp这个老古董可以利用sftp经由ssh的config跳板通道,进行文件拷贝同步等动作。

#把client本地/root/project/下的文件增量同步到远程n1上的/root/project/
lftp sftp://n1 -e "mirror -R /root/project/"

#把远端n1上的/root/project/下的文件增量同步到client本地/root/project/
lftp sftp://n1 -e "mirror /root/project/"

# lftp还有多线程参数加速同步或者下载,读者可自行发掘。

来源:华为云社区  作者:divfor

标签:跳板,穿越,ProxyJump,sftp,Host,client,User,ssh
来源: https://blog.51cto.com/u_15214399/2823352