堡垒机透明代理(SOCKS5代理)模式,针对Linux运维体验进行优化,提升了运维人员的运维体验。本文介绍如何配置透明代理。
透明代理(SOCKS5代理)模式
实现原理
-
建立SSH的SOCKS5隧道,隧道建立后产生数据通道A通道为:SOCKS5服务端—SSH客户端进程1—堡垒机SSH服务。
-
设置SOCKS5代理,使对目标主机的访问通过SOCKS5隧道完成。最终的数据通道为:SSH客户端进程2—SOCKS5客户端—A通道—目标主机。
图形客户端配置
以Xshell为例,操作步骤如下:
-
新建Xshell会话,建立SSH的SOCKS5隧道,即与堡垒机建立隧道连接在会话配置中分别填入堡垒机IP、端口(60022)。
-
填写堡垒机用户名密码/密钥(也可打开会话时手动输入)。在连接 > 用户身份验证页面中,方法选择Password。
-
SSH配置,进行以下设置。在左侧选择SSH,右侧面板中勾选与隧道转发相关的选项。
-
进入会话属性的SSH-隧道菜单。此时可看到转发规则列表,包含类型、源主机、侦听端口、目标主机、目标端口等列。
-
单击添加,按以下参数设置。
类型选择Dynamic (SOCKS4/5),源主机填写localhost,侦听端口填写1080。
-
单击确定,保存并打开会话,保持该终端会话窗口打开,此时隧道已经建立。终端显示堡垒机的登录信息和连接成功提示。
-
-
新建会话,填写目标服务器IP、端口。在会话属性的连接页面中,协议保持为SSH。
-
填写服务器用户名密码(也可打开会话时输入,若堡垒机授权组内绑定了凭据,则可只填用户名,不需要填写密码)。在连接 > 用户身份验证页面中,方法选择Password。
-
进入SSH-代理菜单,单击浏览。在代理服务器区域中进行配置。
-
单击会话,添加代理,按以下方式配置。在弹出的会话列表中,选择前面已建立的堡垒机隧道会话作为代理。
-
保存后,返回代理菜单勾选该服务器。确认代理类型和连接参数设置正确。
-
打开会话,可直接登录至已授权给用户使用的服务器,且流量可在堡垒机内进行审计。在代理页面确认已勾选配置的代理服务器。
-
-
批量配置代理服务器可在建立多个Xshell会话后,选中多个会话,点击右键属性,批量配置代理服务器。选中的会话将高亮显示。在批量属性设置中,进入SSH > 代理页面,按照前述方式配置代理服务器即可。
-
配置完成后,只需打开Xshell会话即可登录服务器,不需要先登录堡垒机再选择服务器进入。
openSSH配置
此方法不支持密钥登录堡垒机(密钥登录服务器可将私钥存在堡垒机凭据中)
-
编辑~/.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 -
指定配置文件即可通过堡垒机进行登录、文件上传下载等操作。
-
通过堡垒机登录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后再次执行。说明此功能的目的为减少运维人员登录操作,请依据自身情况判断酌情使用。
-