SSH转发VPC内部服务

Thu Aug 1, 2019

300 Words|Read in about 1 Min
Tags: Devops  

使用SSH搭建隧道,让Devops人员访问VPC内部的一些服务,既安全又方便,即开即用是杀人越货必备之神器!

SSH端口转发

1.正向隧道-隧道监听本地port,为普通活动提供安全连接

ssh -qTfnN -L port:host:hostport -l user remote_ip 
将远程的某个端口服务映射到本地端口

2.反向隧道—-隧道监听远程port,突破防火墙提供服务

ssh -qTfnN -R port:host:hostport -l user remote_ip
将本地端口映射到远程服务器的某个端口,可以让服务器在本地连接,我的端口

3.socks代理

SSH -qTfnN -D port remotehost(用证书验证就直接主机名,没用的还要加上用户名密码)

-q Quiet mode. 安静模式,忽略一切对话和错误提示。

-T Disable pseudo-tty allocation. 不占用 shell 了。

-f Requests ssh to go to background just before command execution. 后台运行,并推荐加上 -n 参数。

-n Redirects stdin from /dev/null (actually, prevents reading from stdin). -f 推荐的,不加这条参数应该也行。

-N Do not execute a remote command. 不执行远程命令,专为端口转发度身打造。

ssh实现转发, 只要用到以下两条命令:

# ssh -CfNg -L 6300:127.0.0.1:1521 oracle@172.16.1.164
表示把远程172.16.1.164上的1521服务转发到本机6300端口
# ssh -CfNg -R 1521:127.0.0.1:6300 oracle@172.16.1.164

不论是做跳板, 还是加密隧道, 还是加密其他的网络连接也都是这两条命令。 视具体情况而定, 有时只要用到其中一条, 有时两条都要用到.

参数说明

使用方式:
ssh -L 本地端口:服务器地址:服务器端口 用户名@服务器地址 -N

-f Fork into background after authentication. 后台认证用户/密码,通常和-N连用,不用登录到远程主机。

-p port Connect to this port. Server must be on the same port. 被登录的ssd服务器的sshd服务端口。

-L port:host:hostport 端口映射参数 本地端口 - 这个任意即可,只要本机没有其他的程序占用这个端口就行

-R port:host:hostport 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口. 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接,该连接就经过安全通道转向出去,同时本地主机和 host 的 hostport 端口建立连接。 可以在配置文件中指定端口的转发。 只有用 root 登录远程主机才能转发特权端口。

-D port 指定一个本地机器 “动态的’’ 应用程序端口转发. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接. 目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器. 只有 root 才能转发特权端口. 可以在配置文件中指定动态端口的转发。

-C Enable compression. 压缩数据传输。

-N Do not execute a shell or command. 不执行脚本或命令,通常与-f连用。不使用Shell窗口,纯做转发的时候用,如果你在映射完成后继续在服务器上输入命令,去掉这个参数即可。
在ssh代理在后台运行,但是在中国目前的网络情况下,最好是放在前台,运行一些top交互命令。以此保持长活动链接,防止被电信主动断开ES链接。

-g Allow remote hosts to connect to forwarded ports. 在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接

举例:

(localhost)#ssh  -L 127.0.0.1:8080:192.168.200.253:8080 loguser@8.8.8.8
表示在本机开放一个端口8080,转发到8.8.8.8的内网192.168.200.253的8080服务上

(A)#ssh -CNfg -R 8888:localhost:2121 root@B
将A机的2121端口映射到B机器的8888端口
也可以这样
(A)#ssh -CNfg -R 8888:A网络中的其他ip:2121 root@B
将A机网络中其他服务器IP的2121端口映射到B机器的8888端口

See Also

Thu Aug 1, 2019

300 Words|Read in about 1 Min
Tags: Devops