zoukankan      html  css  js  c++  java
  • SSH ProxyCommand 实践


    在阿里上搭了典型的 Nginx + APP server 的架构:

    Nginx APP server

    即,只有 Nginx 服务器与公网链接。然后,每次部署升级服务器都要先 SSH 到 Nginx 再 SSH 到 server1 及 server2。问题来了,怎样才能快速有效的管理服务器?

    上 Puppet、Chef 这样的配置管理工具?一个手掌能数过来的服务器没必要啊,随意 Version 0 诞生了。

    Version 0

    Ver0 总结起来就是基于 SSH 隧道的 Python 脚本,具体可以参见 简易自动化部署服务器集群

    在实际使用中发现,在 MAC OS 下每次通过隧道自动登录 APP server 均不能成功。于是,有了 Version1。

    Version 1

    OpenSSH 有个 ProxyCommand 配置选项,可以配置客户端通过一个代理服务器上的 netcat 与内网服务器(与代理服务器同一内网)进行通信。配置如下(使用秘钥鉴权):

    Host    your host alias name, such as test.cnblog
        HostName    your host ip
        User    xxx
        ProxyCommand    none
        IdentityFile    path of your private ssh key file 
        PasswordAuthentication    no
    

    然后,配置 APP server:

    Host    webserver1
        HostName    xxxx.xxxx.xxxx.xxxx
        User    xxx
        ProxyCommand    ssh test.cnblog nc %h %p
        IdentityFile    path of your private ssh key file 
    

    此时,ssh webserver1 就可以直接访问 APP server1 了,写个自动脚本什么的也就很简单了。

    当然,以上操作成功的前提是:所有用到的 SSH 公钥都已经传输到对应服务器了。

    后话

    在 Ver1 过程中发现,只要建立隧道时使用 ssh -NL,在 MAC 下也可以通过隧道自动登录到 APP server1 了。

  • 相关阅读:
    Android Service 启动和停止服务
    Android 子线程中进行UI操作遇到的小问题
    JZ66 机器人的运动范围
    JZ65 矩阵中的路径
    JZ64 滑动窗口的最大值
    JZ63 数据流中的中位数
    Z62 二叉搜索树的第k个结点
    JZ61 序列化二叉树
    JZ60 把二叉树打印成多行
    JZ59 按之字形顺序打印二叉树
  • 原文地址:https://www.cnblogs.com/shanpow/p/4264867.html
Copyright © 2011-2022 走看看