堡垒机透明代理(SOCKS5代理)模式,针对Linux运维体验进行优化,提升了运维人员的运维体验。本文介绍如何配置透明代理。

透明代理(SOCKS5代理)模式

实现原理

  1. 建立SSH的SOCKS5隧道,隧道建立后产生数据通道A通道为:SOCKS5服务端—SSH客户端进程1—堡垒机SSH服务。
  2. 设置SOCKS5代理,使对目标主机的访问通过SOCKS5隧道完成。最终的数据通道为:SSH客户端进程2—SOCKS5客户端—A通道—目标主机。

图形客户端配置

以Xshell为例,操作步骤如下:
  1. 新建Xshell会话,建立SSH的SOCKS5隧道,即与堡垒机建立隧道连接在会话配置中分别填入堡垒机IP端口(60022)
    • 填写堡垒机用户名密码/密钥(也可打开会话时手动输入)。
    • SSH配置,勾选红框中内容。
    • 进入会话属性的SSH-隧道菜单。
    • 单击添加,按下图设置。
    • 单击确定,保存并打开会话,保持在如下界面,此时隧道已经建立。
  2. 新建会话,填写目标服务器IP、端口。
    • 填写服务器用户名密码(也可打开会话时输入,若堡垒机授权组内绑定了凭据,则可只填用户名,不需要填写密码)。
    • 进入SSH-代理菜单,单击浏览
    • 单击会话,添加代理,按照下图配置。
    • 保存后,返回代理菜单勾选该服务器。
    • 打开会话,可直接登录至已授权给用户使用的服务器,且流量可在堡垒机内进行审计。
  3. 批量配置代理服务器可在建立多个Xshell会话后,选中多个会话,点击右键属性,批量配置代理服务器。
  4. 配置完成后,只需打开Xshell会话即可登录服务器,不需要先登录堡垒机再选择服务器进入。

openSSH配置

说明 此方法不支持密钥登录堡垒机(密钥登录服务器可将私钥存在堡垒机凭据中)
  1. 编辑~/.ssh/ssh_config文件(没有该文件可新建),输入如下内容(可直接复制,更改堡垒机用户名与IP即可)。
    #堡垒机别名 
    Host __USM__ 
    #堡垒机用户名(本地账号、AD/LDAP账号、RAM子账号) 
    User 136xxxxxxxx 
    #堡垒机IP 
    Hostname 120.55.xx.xx 
    #端口 
    Port 60022 
    
    
    #目标服务器 
    Host 1* 2* 3* 4* 5* 6* 7* 8* 9* 
    #关闭密钥验证 
    PubkeyAuthentication no 
    #设置堡垒机为代理 
    ProxyCommand ssh -F /root/.ssh/ssh_config -A -q __USM__ -W %h:%p 
    Host a* b* c* d* e* f* h* i* j* k* l* m* n* o* p* q* r* s* t* u* v* w* x* y* z* 
    PubkeyAuthentication no 
    ProxyCommand ssh -F /root/.ssh/ssh_config -A -q __USM__ -W %h:%p 
    Host A* B* C* D* E* F* H* I* J* K* L* M* N* O* P* Q* R* S* T* U* V* W* X* Y* Z* 
    PubkeyAuthentication no 
    ProxyCommand ssh -F /root/.ssh/ssh_config -A -q __USM__ -W %h:%p
  2. 指定配置文件即可通过堡垒机进行登录、文件上传下载等操作。
    • 通过堡垒机登录xxx.xxx.xxx.xxx服务器。ssh -F .ssh/ssh_config root@xxx.xxx.xxx.xxx

      按要求输入堡垒机用户密码。

    • 通过堡垒机与xxx.xxx.xxx.xxx互相上传下载文件。scp -F .ssh/ssh_config filename root@xxx.xxx.xxx.xxx:/。若连接时出现如下错误:ssh_exchange_identification: Connection closed by remote host,请删除~/.ssh/known_hosts后再次执行。
      说明 此功能的目的为减少运维人员登录操作,请依据自身情况判断酌情使用。