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

f80083e001c59a8c1b25f5e0608c2e59.png

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

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

  • ssh-keygen -t rsa 运行此命令产生公钥私钥,一路回车可以不设置保护密码
  • 检查是否产生了这俩文件 ~/.ssh/id_rsa,~/.ssh/id_rsa.pub
  • 记住这个公钥私钥对所属的用户名

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

  • cat ~/.ssh/id_rsa.pub | ssh username@next_jumper 'cat - >> ~/.ssh/authorized_keys', 此处需要username的密码
  • 尝试ssh username@next_jumper 这时不需要密码应该能登录
  • 对中间跳板机之间的每个登录关系做如上验证

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

  • 确保ssh client支持ProxyJump语句(openssh 7.5版本之后,mac mojave和ubuntu 18.04开始)
  • 创建~/.ssh/config文件,描述跳板机的树形级联拓扑结构(下面举例描述两条路径client->jumper1->jumper2a->jumper3->node1, client->jumper1->jumper2b->jumper4->node2|192.168.103.0/24, 注意,第一级jumper不带ProxyJump语句, Port为22也可以缺省不写):
  • 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
  • 参照步骤2把client公钥放置到每个叶子节点<node1, node2, 192.168.103.*>

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还有多线程参数加速同步或者下载,读者可自行发掘。

本文来源:华为云社区

原文链接:利用ssh穿越多个跳板机最简单最高效的办法_云博客_云社区-华为云

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值