300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Linux下使用Shell脚本实现反向ssh自动交互

Linux下使用Shell脚本实现反向ssh自动交互

时间:2020-04-18 08:31:53

相关推荐

Linux下使用Shell脚本实现反向ssh自动交互

本文章简单介绍如何通过脚本实现反向ssh的登录,有了该脚本,可以实现反向ssh隧道的自动交互,该脚本可供其他应用程序直接调用,不需要用户手动触发,给使用者提供方便。

首先生成一份名为“autossh”的脚本,该脚本内容如下所示:

#!/bin/shecho "auto revssh start!"#获取反向ssh登录参数:外网ip,外网端口,转发端口号,用户名,密码,登录用户名REMOTE_HOST=$1PORT=$2FWDPORT=$3REMOTE_USR=$4PWD=$5REMOTE_USR=$6#依次打印相关参数的信息echo "host:$REMOTE_HOST"echo "PORT:$PORT"echo "USR:$REMOTE_USR"echo "PWD:$PWD"echo "FWDPORT:$FWDPORT"echo "run auto_login"expect <<-EOF#使用expect命令实现反向ssh登录交互#传入参数:外网ip,外网端口,转发端口号,用户名,密码,登录用户名spawn ssh -R $FWDPORT:localhost:$PORT $REMOTE_HOST -l $REMOTE_USRexpect {"password" {send "$PWD\r"; set timeout -1}#输入密码"(yes/no)?" {send "yes\r"; exp_continue}"connecting? (y/n)" {send "y\r"; exp_continue}}expect eofexitEOF

使用例子,写一个c语言的demo程序,如下所示:

#include<stdio.h>#include<string.h>void main(){system("./autossh 192.168.4.20 22 13766 admin admin admin");}

编译该demo程序,生成一个名为revssh的执行文件,然后运行该可执行文件,效果如下所示:

由上图可知,该脚本被调用之后,自动执行了一系列的手动输入的操作。

使用快捷键“ctrl+c”,终止该脚本以及相关的ssh连接,如下图所示:

在外网服务端查看转发端口是否已经监听。输入“netstat -ant”查看端口监听情况,如下图所示:

在外网服务端通过反向ssh隧道访问内网设备,如下图所示:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。