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

一般大家知道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 jumper1User <user_of_jumper1>Hostname <ip_of_jumper1>Host jumper2aUser <user_of_jumper2a>Port 2222Hostname <ip_of_jumper2a>ProxyJump jumper1Host jumper2bUser <user_of_jumper2b>Hostname <ip_of_jumper2b>ProxyJump jumper1Host jumper3User <user_of_jumper3>Hostname <ip_of_jumper3>ProxyJump jumper2aHost jumper4User <user_of_jumper4>Hostname <ip_of_jumper4>ProxyJump jumper2bHost node1 n1User <user_of_node1>Hostname <ip_of_node1>ProxyJump jumper3Host node2 n2User <user_of_node2>Hostname <ip_of_node2>ProxyJump jumper4Host 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 10TCPKeepAlive yesControlPersist yesControlMaster autoControlPath ~/.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

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

  1. 利用阿里云虚拟机作为跳板机实现内网穿透

    大家经常会有这样的需求,公司有一台电脑处在局域网中,没法带回家中,但是又想访问它,或者有个ipad想通过ssh协议在任何地方连上自己的电脑编程,尤其是linux用户,这样的需求经常会有,那如何实现呢? ...

  2. 堡垒机介绍和跳板机的简单实现

    堡垒机: 在一个特定的网络环境下(公司),如果用户可以直接远程登录操控后端的服务器是十分危险的,为了保障网络和数据不受外部和内部用户的入侵和破坏,运用各种手段监控和记录运维人员对网络内的服务器.网络设 ...

  3. ssh隧道(通过跳板机)连接mysql

    案例: A服务器   B服务器   C服务器mysql 现在mysql服务器C只能通过内网访问,B服务器就能通过内网连接访问到mysql A服务器无法直接连接C服务器mysql,所以要通过跳板机(跳板 ...

  4. 【vscode】ssh通过跳板机连接内网服务器

    以防自己忘记.. 跟着下面的步骤 step 1 本地生成密钥 生成自己电脑的公钥和私钥 ssh-keygen -t ed25519 会跳出几个步骤,第一个是指定路径用的,可以直接回车:后两个步骤是设置 ...

  5. shell开发跳板机功能脚本

    利用Shell开发跳板机功能脚本案例 范例17_6:开发企业级Shell跳板机案例.要求用户登录到跳板机仅能执行管理员给定的选项动作,不允许以任何形式中断脚本到跳板机服务器上执行任何系统命令 方法1: ...

  6. vscode 经过跳板机,连接到内网服务器

    1.背景:为啥要用跳板机? 一般实验室等环境的服务器是设置在内网环境中的,无法直接使用笔记本在公共环境下直接连接.但是由于种种原因,会出现在这样的场景下需要连接服务器的需求,而通过跳板机是一种常见的办 ...

  7. 使用跳板机在Pycharm上配置内网服务器

    使用跳板机在Pycharm 上使用内网服务器环境 ​ 最近遇到一个问题:实验室服务器仅限内网访问,无法在家(外网)访问实验室的所有内部服务器,但同时实验室又提供了一个外网可以访问的跳板机,虽然可以先s ...

  8. windows平台下VSCode通过跳板机连接服务器

    一.安装openssh 我会在后记部分解释为什么这步是必需的.好多人推荐都是使用windows的Powershell来安装: 以管理员身份运行window Powershell(windows键+x, ...

  9. 基于AWS 平台跳板机配置

    很多用户通过跳板机对部署在AWS平台的应用系统进行日常维护,为管理私有网络的服务器提供便利,最小化了应用系统的安全风险,从而有利于提升整体架构的安全. 为达到更好的安全性,需要进行恰当的规划,通常可以 ...

最新文章

  1. [转]SVN更新的时候前面字母的意思(U、G、A、R、C)
  2. 如何查看功能的源代码?
  3. Sublime Text 无法使用Package Control或插件安装失败的解决方法【转】
  4. OLAP是什么意思?
  5. java中实现十六进制和十进制之间的转换
  6. 通过命令修改wampserver的mysql密码
  7. c#quartz触发_SpringBoot集成Quartz实现定时任务
  8. sleep(),wait(),yield(),notify()
  9. 关于多级导航如何实现 详细解释。
  10. 一个前端小白的成长之路(序)
  11. iPhone5/iPad4越狱后10.3.3降级8.4.1详细教程
  12. 安卓:股票筛选及分析系统
  13. 判断三角形的性质(直角或等腰)简便算法
  14. 中煤哈密智能汽车电子衡系统过磅流程
  15. 【网络协议模糊测试实战】使用sulley对PCManFTP进行模糊测试
  16. 软件测试 前置条件是什么意思,测试用例的前置条件
  17. sphinx启动searchd进程出现search error failed to open No such file or directory
  18. hardmard积 用什么符号表示_复数域符号相乘的差分网络编码
  19. 视频教程-ShardingSphere:SpringBoot2+MybatisPlus+Swagger读写分离-Java
  20. 人若无名便可专心练剑,物若无名便可随意取舍

热门文章

  1. mysql innodb和myisam区别_MySQL?存储引擎简介
  2. java8怎么按照两个字段的乘积排序_django-orm F对象的使用 按照两个字段的和,乘积排序实例...
  3. Quality Assurance (QA)
  4. 查找某一字符串在目标字符串中所在的位置
  5. asp.net core webapi Session 内存缓存
  6. Python 多线程进程高级指南(二)
  7. 算法不归路之最大子序列(C++版)
  8. USACO / Factorials (简单模拟)
  9. 在索引列上正确使用LIKE运算符
  10. leetcode 1222 python