反向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/