本文章简单介绍如何通过脚本实现反向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隧道访问内网设备,如下图所示:

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

  1. Linux下的shell脚本实战之用户创建

    Linux下的shell脚本实战之用户创建 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.该脚本提示用户创建用户名和密码 2.判断输入的用户名是 ...

  2. linux下执行shell脚本文件,Linux下使用shell脚本自动执行脚本文件

    搜索热词 以下实例本人在Centos6.5 64位操作系统中使用 一.定时复制文件 a.在/usr/local/wfjb_web_back目录下创建 tomcatBack.sh文件 #将tomcat中 ...

  3. linux下的shell脚本

    linux下的shell脚本 一.Shell概述 二.Shell 解析器 三.Shell脚本入门 1. 脚本格式 2. 第一个Shell脚本:helloworld 3. 第二个Shell脚本:多命令处 ...

  4. linux实现学生信息管理系统,Linux下基于shell脚本实现学生信息管理系统

    LINUX Linux操作系统 Linux下基于shell脚本实现学生信息管理系统 #该管理系统是参考两位博主(时间有点远了,我忘了,请博主看到后联系我)后自行修改添加的.登录过程还有很多不完善,我就 ...

  5. linux下的shell脚本,linux下的shell脚本的使用

    什么是shell? Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户进行对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户.这种对话方式可是交互 ...

  6. Linux下通过shell脚本创建账户

    当我们在linux平台上开发一些项目时,或者有一些项目是需要部署到linux系统上时,有时候会涉及到linux上的特定的账户,例如有一些项目需要运行在某些特定的账户下,或者有时候需要在全新的环境上搭建 ...

  7. linux下的shell脚本,linux下shell脚本的学习

    一:shell脚本须以#!/bin/sh开始,指定了命令的解释器 #!/bin/sh  //指定解释器 sudo mv /home/pi/Desktop/installationPackage/bac ...

  8. linux下的shell脚本(基本)

    2019独角兽企业重金招聘Python工程师标准>>> Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本,常见的脚本解释器有: bash:是Linux标准默认的shell ...

  9. Linux下使用 shell 脚本实现ftp文件下载

    最近从单片机转岗Linux,上级叫我熟悉下shell脚本,用shell脚本获取ftp上的文件,本节先介绍下载文件.单个下载文件脚本实现如下: 运行环境:WSL ####### ftp服务器上下载/ho ...

最新文章

  1. JavaScript 中 Object ,Prototype 相关的属性和方法
  2. 【web安全】Spring Boot eureka xstream 反序列化
  3. Linux(4)系统管理
  4. 如何避免大脑短路?用心理学分析重庆公交车坠江案
  5. 线程同步有几种方法_架构师面试必问的多线程状态切换及常用方法
  6. SDL2源代码分析2:窗口(SDL_Window)
  7. Java基础:String类支持几种构造函数?
  8. 运维的核心竞争力是什么
  9. 没有装Express版Sql Server 2005就不能用WebPart ?
  10. 一名7年总监的6点离职忠告
  11. Atitit.软件仪表盘(7)--温度监测子系统--电脑重要部件温度与监控and警报
  12. VARCHART XGantt 应用程序支持简介
  13. linux设置dns简单的,Linux下的DNS简单配置
  14. 企业为什么着急签三方_学校又在催我签三方了、三方协议很重要吗、签完三方能毁约吗……...
  15. Audio Unit
  16. 微信答题小程序开发遇到过的坑
  17. PHP关闭Notice错误提示
  18. IOS系统历届版本大回顾(iOS7)
  19. HEVC代码学习35:xEncodeCU函数
  20. 海外直播互动怎么做?如何活跃用户?

热门文章

  1. 超详细:将iPhone中音乐导出到电脑里的简单方法(完美支持最新iOS15.2系统)
  2. 什么?还在用delete删除数据《死磕MySQL系列 九》
  3. Python使用pyecharts库制作地图热力图
  4. 如何用matlab画圆环,利用内外径画圆环
  5. mockjs的安装使用
  6. UNIX环境高级编程(1)——UNIX系统总览
  7. 《UNIX环境高级编程(第3版)》
  8. 前端实现打电话、发短信邮件
  9. C++中return 0;与return;的区别
  10. 怎么在视频中截取音频作为手机铃声?