简介

sshpass是一款自动为ssh填充密码的开源插件,并没有对ssh做任何修改,是从外部进行的操作。sshpass实现比较简单,但是非常易用,原理与expect类似。sshpass主函数源码只有500来行,在https://sourceforge.net/projects/sshpass/ 可以下载。

密码填充方式

    sshpass密码填充方式有三种,通过-p后边的参数将密码传送过去,读取文件第一行作为密码传过去,或者通过-e将名字为SSHPASS的环境变量作为密码传过去。
void write_pass( int fd )
{switch( args.pwtype ) {case PWT_STDIN:   // 密码来自标准输入write_pass_fd( STDIN_FILENO, fd );break;case PWT_FD:     // 密码来自文件描述符write_pass_fd( args.pwsrc.fd, fd );break;case PWT_FILE:  //密码来自文件{int srcfd=open( args.pwsrc.filename, O_RDONLY );if( srcfd!=-1 ) {write_pass_fd( srcfd, fd );close( srcfd );}}break;case PWT_PASS:  //密码来自变量,使用-p或者SSHPAS环境变量write( fd, args.pwsrc.password, strlen( args.pwsrc.password ) );write( fd, "\n", 1 );break;}
}

密码填充原理

    这里大概画了一张sshpass的原理图。

    当main函数开始执行,主进程执行`masterpt=posix_openpt(O_RDWR);`此时会有一个伪终端,然后fork()出一个子进程,在子进程下执行ssh命令,当收到带有*assword关键词的输出时候讲密码填充进去。

sshpass 使用方式

    sshpass 命令放在ssh命令之前,sshpass 与ssh分别将自己的命令参数放到自己后面。
sshpass "command params"  ssh root@127.0.0.1 "ssh's command params"

SSHPASS 源码分析相关推荐

  1. 【Golang源码分析】Go Web常用程序包gorilla/mux的使用与源码简析

    目录[阅读时间:约10分钟] 一.概述 二.对比: gorilla/mux与net/http DefaultServeMux 三.简单使用 四.源码简析 1.NewRouter函数 2.HandleF ...

  2. SpringBoot-web开发(四): SpringMVC的拓展、接管(源码分析)

    [SpringBoot-web系列]前文: SpringBoot-web开发(一): 静态资源的导入(源码分析) SpringBoot-web开发(二): 页面和图标定制(源码分析) SpringBo ...

  3. SpringBoot-web开发(二): 页面和图标定制(源码分析)

    [SpringBoot-web系列]前文: SpringBoot-web开发(一): 静态资源的导入(源码分析) 目录 一.首页 1. 源码分析 2. 访问首页测试 二.动态页面 1. 动态资源目录t ...

  4. SpringBoot-web开发(一): 静态资源的导入(源码分析)

    目录 方式一:通过WebJars 1. 什么是webjars? 2. webjars的使用 3. webjars结构 4. 解析源码 5. 测试访问 方式二:放入静态资源目录 1. 源码分析 2. 测 ...

  5. Yolov3Yolov4网络结构与源码分析

    Yolov3&Yolov4网络结构与源码分析 从2018年Yolov3年提出的两年后,在原作者声名放弃更新Yolo算法后,俄罗斯的Alexey大神扛起了Yolov4的大旗. 文章目录 论文汇总 ...

  6. ViewGroup的Touch事件分发(源码分析)

    Android中Touch事件的分发又分为View和ViewGroup的事件分发,View的touch事件分发相对比较简单,可参考 View的Touch事件分发(一.初步了解) View的Touch事 ...

  7. View的Touch事件分发(二.源码分析)

    Android中Touch事件的分发又分为View和ViewGroup的事件分发,先来看简单的View的touch事件分发. 主要分析View的dispatchTouchEvent()方法和onTou ...

  8. MyBatis原理分析之四:一次SQL查询的源码分析

    上回我们讲到Mybatis加载相关的配置文件进行初始化,这回我们讲一下一次SQL查询怎么进行的. 准备工作 Mybatis完成一次SQL查询需要使用的代码如下: Java代码   String res ...

  9. [转]slf4j + log4j原理实现及源码分析

    slf4j + log4j原理实现及源码分析 转载于:https://www.cnblogs.com/jasonzeng888/p/6051080.html

最新文章

  1. Go语言fmt.Printf使用指南(占位符总结)
  2. 02 | 日志系统:一条 SQL 更新语句是如何执行的
  3. JavaScript实现使用二元运算符将两个数字相加fullAdder算法(附完整源码)
  4. linux c的连接库和怎么同时编译多个源程序
  5. 机器学习之EM算法的原理推导及相关知识总结
  6. 计算机科学与技术pdf,计算机科学与技术(.PDF
  7. 区分大小屏幕_第一个Python程序——在屏幕上输出文本
  8. 搜狗高速浏览器打开网页没有声音怎么办
  9. lisp代码编写地物符号_Aroma:通过结构代码搜索推荐代码
  10. Extjs数据展现原理
  11. 后悔药来了?发出去的微信图文消息删除后不再显示
  12. Unicode 字符编码
  13. 5000的台式计算机,预算5000的台式组装机配置清单_预算5000的台式组装机配置
  14. 【解决】计算机用户名是中文名导致软件安装失败!
  15. 软件质量的定义及其六大特性(质量模型)
  16. 数字营销中台和全渠道的数字化精耕,快消老品牌实现数字营销焕新生
  17. python调用报表制作工具_Python如何使用xlwt制作一个表格
  18. 基于java+ssm+mysql的大学生考勤管理系统及智能分析系统
  19. UE4-(场景)后期盒子(PostProcessVolume)之Exposure自动曝光
  20. ISO20000和ITSS认证有什么区别

热门文章

  1. PTCms小说系统自动在线采集修正版+手机
  2. 车辆逆行识别检测系统 opencv
  3. SATA硬盘与ATA硬盘区别
  4. python 浮点数字符串转int类型
  5. java重定向url_Java根据新的URL 对网页进行重定向
  6. 阳光智博改嫁给万物云:终止独立IPO计划,阳光城获利25亿元
  7. Java SpringMVC三层架构及执行流程
  8. 搭乘地铁|轻轨规律(^-^) [大三四八九月实习]
  9. 定义Mybatis拦截器动态切换postgre数据库schema
  10. C++之标示符命名规则