SSH工具的非常规使用

原创 景朝阳 FreeSWITCH中文社区 今天
 

说明:本文所有的命令是基于OpenSSH客户端7.4p1版本。如果出现命令不正确,请检测是否为此OpenSSH版本。

设置动态代理

工作中经常会遇到使用ssh远程帮客户调试安装,但是在调试安装过程中,有时需要浏览器去访问HTTP服务,这时可以用ssh -D方式在本地启用一个socks5的代理:

#加上-Nf参数可以将此连接放到后台
ssh -D 2080 root@1.1.1.1 -N -f

连接成功后,再配置浏览器使用socks5://127.0.0.1:2080的代理,即可访问远程内网的HTTP服务。

SSH隧道连接

将远程服务器端口映射到本地内网

ssh隧道可以实现将远程服务器的某个端口,映射到本地PC上。

比如这样一个场景:公网服务器上有个MySQL数据库服务,它只监听127.0.0.1:3306。我有远程服务器C的ssh访问权限,而同事B没有该服务器的ssh权限,但是同事此时需要连接此数据库,我就可以用下面命令将远程的3306端口映射到我本地PC的19999端口。

内网同事B: 192.168.0.6 ---> 内网的我A: 192.168.0.5 ---> 公网服务器C: 1.1.1.1

#在内网A机器上执行下面命令
ssh -L 0.0.0.0:19999:127.0.0.1:3389 root@1.1.1.1 -N -f

这样同事只需要用mysql命令连接192.168.0.5:19999即可。

将本地内网端口映射到远程服务器

ssh隧道除了上面的将远程服务器端口映射到本地,还可以将本地内网的端口映射到远程服务器上。

常用场景:公司内网有个演示产品应用,需要给客户(B)访问此服务器(A)的80端口。但是此服务器没有公网IP,也没有做端口映射,此服务器只有访问公网的权限,我们只有一个生产的服务器(C)在公网。

客户内网B: 192.168.0.6 ---> 公网生产服务器C: 1.1.1.1 ---> 内网服务器C: 192.168.3.100

#在内网服务器C上执行下面命令
ssh -f -N -R 19999:localhost:80 root@1.1.1.1

客户直接访问http://1.1.1.1:19999即可

注意:上面公网服务器1.1.1.1需要开启sshd_config配置内的一个参数,GatewayPorts yes。如果不开启此参数,默认创建的监听地址是127.0.0.1,开启此参数后监听地址为0.0.0.0

使用ssh-agent

ssh-agent可以将本地的私钥文件保存到ssh会话里面,这样远程连到服务器B上,就可以将个人的私钥文件也带入过去。

常用场景:一个git仓库添加了我个人的公钥证书,我有权限用git的ssh协议去pull和push。但是我临时需要部署服务器B,而又不想在git仓库添加此服务器的公钥。这时即可通过使用ssh-agent转发本地的私钥到远端服务器上。

#启动ssh-agent
eval $(ssh-agent -s)
#添加本地私钥文件(若不加私钥路径,则使用默认私钥路径)
ssh-add ~/.ssh/id_rsa
#验证是否正确添加key,正确情况会列出你的公钥信息
ssh-add -L

上面是启用ssh-agent,下面还需要修改ssh_config配置文件,开启ForwardAgent yes

#此处是全局启用ForwardAgent参数
Host *
User root
ForwardAgent yes

开启后,ssh root@1.1.1.1远程连接到远程服务器,然后用ssh-add -L在远程服务器上也可以看的你的公钥信息,这样再使用ssh协议的git clone就可以正常使用了。当然也可以再用自己的私钥,通过ssh访问其他有权限登录的服务器。

设置跳板机

生产环境中,有许多服务器没有开启公网的SSH访问,只能通过一个跳板机登录到生产内网,然后再访问生产服务器。这时候在使用scp进行文件传输、以及用ssh登录等操作很不方便。

方法一、修改ssh_config配置文件

OpenSSH 7.3版本以上的可以用下面配置:

#内网服务器端,也可写死为单个ip
Host 192.168.0.*
User root
#跳板机用户为:test,IP地址为:1.1.1.1,端口为:22022
ProxyJump test@1.1.1.1:22022

OpenSSH 7.3版本以下的用下面配置:

#内网服务器端,也可写死为单个ip
Host 192.168.0.*
User root
#跳板机用户为:test,IP地址为:1.1.1.1,端口为:22022
ProxyCommand ssh -p 22022 test@1.1.1.1 -W %h:%p

方法二、直接用命令

除了修改配置文件,还可以直接用命令实现,下面先说下7.3版本以上,支持ProxyJump的版本:

#跳板机用户为:test,IP地址为:1.1.1.1,端口为:22022,内网服务器为192.168.0.100
ssh -J test@1.1.1.1:22022 root@192.168.0.100

7.3以下版本

#跳板机用户为:test,IP地址为:1.1.1.1,端口为:22022,内网服务器为192.168.0.100
ssh -o ProxyCommand="ssh -p 22022 test@1.1.1.1 -W %h:%p" root@192.168.0.100

提示:以上跳板机配置也同样适用于基于ssh协议的工具,比如ansiblegit

ssh跳转设置的更多相关文章

  1. 【原创】大叔问题定位分享(28)openssh升级到7.4之后ssh跳转异常

    服务器集群之间忽然ssh跳转不通 # ssh 192.168.0.1The authenticity of host '192.168.0.1 (192.168.0.1)' can't be esta ...

  2. ssh无密码登录设置方法以及出现问题 ECDSA host key 和IP地址对应的key不同的解决

    最近在做hadoop,因为要求各主机之间的用户必须相同,且为方便远程登录,需配置无密码登录 先附上ssh无密码登录设置方法: 先生成密钥并配置无ssh无密码登录本机,输入命令: ssh-keygen ...

  3. SSH远程连接时间设置

    SSH远程连接时间设置步骤: 1.回到根目录:cd // 2.进入ssh目录:cd etc/ssh 3.编辑sshd_config文件:vi sshd_config 4.按 i 进入编辑状态 5.找到 ...

  4. iOS APP跳转设置界面以及设置中的其他界面

    1.跳转设置总页面(iOS10+以及之前的都可以用:ios10+ 是跳转到了应用到设置界面) [[UIApplication sharedApplication]openURL:[NSURL URLW ...

  5. 思科ASA5520防火墙telnet、SSH及DHCP设置

    ASA5520远程登录telnet 注:最低安全级别的接口不支持telnet登陆,如OutsideASA(config)# telnet 172.16.0.0 255.255.0.0 inside   ...

  6. ios 判断用户是否开启权限---并跳转设置

    ios 判断用户是否开启权限---并跳转设置 ios 判断用户是否开启权限---并跳转“系统设置” 1.判断 访问相册 或 相机 权限是否开启 2.检测是否开启定位 后面将持续更新 只有在应用请求过位 ...

  7. 小程序使用微信地址or小程序跳转设置页

    如果你有使用过小程序需要你授权微信地址的情况,那么正常的逻辑应该是这样的: 点击获取地址后,弹窗: 此时我相信选择拒绝的人应该还是比较多的,毕竟这是敏感数据,拒绝后再看页面相关功能是否有使用地址的合适 ...

  8. 普通用户ssh无密码登录设置

    这段时间在做Hadoop的环境配置,用root用户只需要按照一定的步骤进行操作就可以直接实现无密码登录,但如果使用新建用户,怎么尝试都不行. 本帖大部分都是其他人帖子的内容.如果按照下面的步骤还是不能 ...

  9. ssh无密码通信设置

    ■单向登陆配置:1.在本地机器中的~/.ssh/目录下执行下命令#ssh-keygen -t dsa然后全部回车,采用默认值.生成了一对密钥,id_dsa和id_dsa.pub,存放在用户目录的~/. ...

随机推荐

  1. Sci Adv | 上科大水雯箐/胡霁/钟桂生脑蛋白质组学研究揭示抑郁行为的新调控因子

    大脑是生物体内结构和功能最复杂的组织.近年来蓬勃发展的脑蛋白组学研究是绘制大脑功能分子图谱.全面理解大脑生理病理机制的必经途径.跨膜蛋白家族在突触信号传递和神经可塑性调节中扮演重要角色,许多跨膜蛋白与 ...

  2. dubbo学习实践(1)之管理控制台Dubbo-admin部署

    1.Docker拉取现有镜像,构建Dubbo-admin 拉取镜像,这里使用chenchuxin/dubbo-admin docker pull chenchuxin/dubbo-admin 注册中心 ...

  3. 嵌入式linux启动过程详解

    启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬 ...

  4. Java Swing 空布局

    Swing 空布局 试了盒布局,说实话不太会用,很多地方都没法更加的细节,又翻了翻资料,知道了还有一个空布局,一看,真不错,很适合我这种菜鸡 用坐标就可以完成界面的布局,不错 话不多说,直接代码 pa ...

  5. 【笔记】简谈L1正则项L2正则和弹性网络

    L1,L2,以及弹性网络 前情提要: 模型泛化与岭回归与LASSO 正则 ridge和lasso的后面添加的式子的格式上其实和MSE,MAE,以及欧拉距离和曼哈顿距离是非常像的 虽然应用场景不同,但是 ...

  6. Java中的形式参数和实际参数

    一.概念 1.形式参数: 就是在定义函数或过程的时候命名的参数. 通俗讲就是一个记号. 2.实际参数: 就是在执行时,调用函数或过程时,传递给函数或过程的参数. 通俗讲就是实际值. 3.参数: 就是一 ...

  7. [总结&搬运]用户测试101

    原文地址:User Testing 101 可用性测试是什么? 可用性测试是一种非常流行的用户研究方式.在可用性测试环节中,通常由主持人.参与者和测试任务三部分组成.主持人会发布测试任务,要求参与者使 ...

  8. .NET Core程序发布报错:project.assets.json”没有“.NETCoreApp,Version=v3.1/win-x64”的目标。确保已运行还原,且“netcoreapp3.1”已包含在项目的 TargetFrameworks中。

    在控制台中使用命令发布.NET Core程序的时候,报如下的错误: project.assets.json"没有".NETCoreApp,Version=v3.1/win-x64& ...

  9. C# 利用反射进行深拷贝

  10. SpringBoot快速入门(必知必会)

    是什么?能做什么 SpringBoot必知必会 是什么?能做什么 SpringBoot是一个快速开发脚手架 快速创建独立的.生产级的基于Spring的应用程序 SpringBoot必知必会 快速创建应 ...