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

2 篇文章 0 订阅

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

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

#!/bin/sh
echo "auto revssh start!"
#获取反向ssh登录参数:外网ip,外网端口,转发端口号,用户名,密码,登录用户名
REMOTE_HOST=$1
PORT=$2
FWDPORT=$3
REMOTE_USR=$4
PWD=$5
REMOTE_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_USR
expect {
    "password" {send "$PWD\r"; set timeout -1}#输入密码
"(yes/no)?" {send "yes\r"; exp_continue}
"connecting? (y/n)" {send "y\r"; exp_continue}
       }
expect eof
exit
EOF

使用例子,写一个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隧道访问内网设备,如下图所示:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赤露水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值