SSH ProxyCommand 实践


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

Nginx APP server

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

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

Version 0

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

在实际使用中发现,在 MAC OS 下每次经过隧道自动登陆 APP server 均不能成功。因而,有了 Version1。ssh

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 了,写个自动脚本什么的也就很简单了。code

固然,以上操做成功的前提是:全部用到的 SSH 公钥都已经传输到对应服务器了。server

后话

在 Ver1 过程当中发现,只要创建隧道时使用 ssh -NL,在 MAC 下也能够经过隧道自动登陆到 APP server1 了。htm

相关文章
相关标签/搜索