SSHPASS 源码分析
来源:互联网 发布:c语言abs函数 编辑:程序博客网 时间:2024/05/24 04:21
简介
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"
阅读全文
0 0
- SSHPASS 源码分析
- sshpass
- 安装sshpass
- sshpass使用
- sshpass 应用
- sshpass访问Linux服务器(sshpass)
- sshpass这个软件不错
- CentOS 6 安装 sshpass
- 尝试用sshpass解决问题
- sshpass详细工作记录
- OpenWrt 安装sshpass方法
- Mac安装sshpass
- CentOS安装sshpass
- sshpass执行远程脚本
- sshpass的安装使用
- rsync+sshpass使用
- 源码分析
- 源码分析
- git(十四)-git cherry-pick
- git的分支与合并
- HDOJ 3665 Seaside(dijkstra最短路,水题~)
- 使用springMVC注解@ResponseBody与jackson工具类在ajax请求中实现对象与json之间的相互转化
- Java 数据类型在实际开发中应用二枚举
- SSHPASS 源码分析
- 关于对SSH隧道SSH Tunnel命令参数的理解
- 1012. The Best Rank (25)
- Spring Batch读取csv文件失败的一种解决方法
- Html的form表单提交到jsp中出现中文乱码
- JavaScript执行环境与作用域链
- 教你彻底学会动态规划
- unity编辑器扩展学习笔记
- 将django项目利用mod_wsgi+Apache部署到linux服务器上