zoukankan      html  css  js  c++  java
  • ssh跳转设置

    SSH工具的非常规使用

     

    说明:本文所有的命令是基于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

  • 相关阅读:
    仿照everything写的一个超级速查 原创
    [转]SharePoint 2013 Online App Development – Part 1
    [转]SharePoint 2013 App 开发 (2)
    [转]ASP.NET自定义控件复杂属性声明持久性浅析
    HasRights方法参数
    故障分析神器——BTrace
    JVM——Memory Analyzor分析内存溢出
    关于句柄
    Java内存区域与内存溢出
    命令行的使用
  • 原文地址:https://www.cnblogs.com/keystone/p/13210177.html
Copyright © 2011-2022 走看看