[ssh]记ssh的几种玩法

得到一台Linux的服务器,我们可以进行以下几种玩法:

 

先讲一讲几个参数:

-f    要求 ssh在执行命令前退至后台.它用于当ssh准备询问口令或密语,但是用户希望它在后台进行.该选项隐含了-n选项.在远端机器上启动

-N    不执行远程命令.用于转发端口.

-C    要求进行数据压缩 (包括stdin, stdout, stderr以及转发X11和TCP/IP连接 的数据).压缩算法和gzip(1)的一样,协议第一版中,压缩级别 “level” 用CompressionLevel选项控制.压缩技术在modem线路或其他慢速连接上很有用,但是在高速网络上反而 可能降低速度.可以在配置文件中对每个主机单独设定这个参数.

-g    允许远端主机连接本地转发的端口

-q    安静模式.消除所有的警告和诊断信息

-T    禁止分配伪终端

-n    把 stdin重定向到/dev/null (实际上防止从stdin读取数据).  ssh在后台运行时一定会用到这个选项.它的常用技巧是远程运行X11程序.

1正向连接

使用ssh的socks5把我们的2090连入远程服务器sudo ssh -NfD 2090 -i /root/.ssh/id_rsa1 root@x.x.x.x -p [ssh端口号] ,把2090端口连入弹到目标机vps上去

 当你有root的权限,建立一个ssh后门,把自己网络连入对方内网,可以访问内网的服务,比如内网工作组或者个人的电脑什么的再组合proxychain工具,类似regourd

浏览器本地设置代理2090端口然后就可以访问内网系统了(这里是我的vps)

2.设置反向 SSH 隧道
 
让他主动连过来,本地直接访问内网。在内网机器上运行如下命令,其中x.x.x.x 为VPS的IP

ssh -fN -R 10021:localhost:80 root@x.x.x.x -p [ssh端口号],运行后需要输入vps的密码

然后可以在VPS上运行命令:内网开启了apche服务

curl 127.0.0.1:10021 

 

3.VPS做转发

我们需要的不仅仅是自己登陆VPS可以操作内网的机器,我们需要的是任意一台主机访问我VPS上的指定端口,然后可以转发到内网,姿势如下:

ssh -qTfnN -R :12345:127.0.0.1:80 root@XXXX -p [ssh端口号] -o GatewayPorts=yes

【要在/etc/ssh/sshd_config中修改GatewayPorts no为GatewayPorts yes来打开它才可以进行转发】

 

使用总结:VPN隧道/SSH隧道


这种代理方式需要比较高的权限(system/root)直接使用系统功能来开启内网代理的隧道,配置VPN什么的

通过SSH隧道进行代理

ssh -qTfnN -L port:host:hostport -l user remote_ip   #正向隧道,监听本地port
ssh -qTfnN -R port:host:hostport -l user remote_ip   #反向隧道,用于内网穿透防火墙限制之类
SSH -qTfnN -D port remotehost   #直接进行socks代理

参数详解:
-q Quiet mode. 安静模式
-T Disable pseudo-tty allocation. 不占用 shell 了
-f Requests ssh to go to background just before command execution. 后台运行,并推荐加上 -n 参数
-N Do not execute a remote command. 不执行远程命令,端口转发就用它了~

有时候,我们手边没有端口转发的工具,也可以通过ssh来做端口转发

ssh -CfNg -L port1:127.0.0.1:port2 user@host    #本地转发
ssh -CfNg -R port2:127.0.0.1:port1 user@host    #远程转发
 
via:
posted @ 2016-12-14 15:10  adislj  阅读(6730)  评论(0编辑  收藏  举报