sshpass 使Linux可以明文参数输入SSH密码

1. sshpass安装1

2. sshpass的参数1

3. sshpass的使用2

这几天配置一台服务器,在某云平台创建云服务器后,生成了巨长、巨复杂的一串密码,在输入几十次密码后,依然是密码错误。这时候就想如果密码是非交互式输入,可以将密码做为参数或从文件输入就太好了。sshpass就是一款密码输入辅助工具,它可以从命令行明文参数、文件或环境变量中指定密码,从而避免交互式密码输入。

l sshpass的安装

l sshpass的参数

l sshpass的使用

1. sshpass安装

首先从以下网址下载sshpass源码:

https://sourceforge.net/projects/sshpass/

下载后解码压,然后进入源码目录:

tar -zxvf sshpass-1.06.tar.gz

cd sshpass-1.06

./configure

make &&make install

详细操作下:

[[email protected]_syslog src]# ls

sshpass_1.06.orig.tar.gz

[[email protected]_syslog src]# tar xf sshpass_1.06.orig.tar.gz

[[email protected]_syslog src]# ls

sshpass-1.06  sshpass_1.06.orig.tar.gz

[[email protected]_syslog src]# cd sshpass-1.06/

[[email protected]_syslog sshpass-1.06]# ls

aclocal.m4  compile      configure.ac  INSTALL     Makefile.am  NEWS

AUTHORS     config.h.in  COPYING       install-sh  Makefile.in  README

ChangeLog   configure    depcomp       main.c      missing      sshpass.1

[[email protected]_syslog sshpass-1.06]# ./configure

[[email protected]_syslog sshpass-1.06]# make && make install

在Mac系统下,也可以使用brew安装:

brew install sshpass

2. sshpass的参数

sshpass安装后,可以在控制台输入sshpass命令查看所有选项参数:

$ sshpass

Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters

-f filename   Take password to use from file

-d number     Use number as file descriptor for getting password

-p password   Provide password as argument (security unwise)

-e            Password is passed as env-var "SSHPASS"

With no parameters - password will be taken from stdin

-P prompt     Which string should sshpass search for to detect a password prompt

-v            Be verbose about what you‘re doing

-h            Show help (this screen)

-V            Print version information

At most one of -f, -d, -p or -e should be used

如上所示,command parameters为你要执行的需要交互式输入密码的命令,如:ssh、scp等。当sshpass没有指定参数时会从stdin获取密码,几个密码输入相关参数如下:

-f filename:从文件中获取密码

-d number:使用数字作为获取密码的文件描述符

-p password:指定明文本密码输入(安全性较差)

-e:从环境变量SSHPASS获取密码

3. sshpass的使用

现有一台服务器登录密码是AHDXyjs2012,登陆的IP为172.17.9.200。使用sshpass的几种录方式如下。

1.将密码写入文件,并从文件获取登录密码:

[[email protected]_syslog sshpass-1.06]# sshpass echo "AHDXyjs2012" > user.passwd

[[email protected]_syslog sshpass-1.06]# sshpass -f user.passwd ssh [email protected]

Last login: Wed Dec  7 10:40:13 2016 from 172.17.9.206

2.以明文的方式输入密码:

[[email protected]_syslog sshpass-1.06]# sshpass -p AHDXyjs2012 ssh [email protected]

Last login: Wed Dec  7 11:00:12 2016 from 172.17.9.206

3.从环境变量中获取密码:

[[email protected]_syslog sshpass-1.06]#  export SSHPASS="AHDXyjs2012"

[[email protected]_syslog sshpass-1.06]# sshpass -e ssh [email protected]

Last login: Wed Dec  7 11:02:34 2016 from 172.17.9.207

4. 远程执行命令

[[email protected]_syslog sshpass-1.06]# sshpass -p AHDXyjs2012 ssh [email protected] "ifconfig|grep inet"

inet 172.17.9.200  netmask 255.255.255.192  broadcast 172.17.9.255

inet6 fe80::250:56ff:feb0:710e  prefixlen 64  scopeid 0x20<link>

inet 127.0.0.1  netmask 255.0.0.0

inet6 ::1  prefixlen 128  scopeid 0x10<host>

inet 172.17.9.208  netmask 255.255.255.255

inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255

5. 远程执行脚本

n 远端的新建脚本

[[email protected]_tomcat ~]# ll /opt/test.sh

-rw-r--r--. 1 root root 61 Dec  7 11:18 /opt/test.sh

[[email protected]_tomcat ~]# cat /opt/test.sh

#!/bin/bash

echo "this test for remote"

ifconfig | grep inet

n 本地端执行远端程序

[[email protected]_syslog sshpass-1.06]# sshpass -p AHDXyjs2012 ssh [email protected] "sh /opt/test.sh"

this test for remote

inet 172.17.9.200  netmask 255.255.255.192  broadcast 172.17.9.255

inet6 fe80::250:56ff:feb0:710e  prefixlen 64  scopeid 0x20<link>

inet 127.0.0.1  netmask 255.0.0.0

inet6 ::1  prefixlen 128  scopeid 0x10<host>

inet 172.17.9.208  netmask 255.255.255.255

inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255

此时说明,已经执行了远端程序。

4. Sshpass 软件包

时间: 2024-10-11 05:55:19

sshpass 使Linux可以明文参数输入SSH密码的相关文章

softAP配网:用Android手机为linux无屏设备输入wifi密码

在面试的过程当中,在面试官提出问题的时候,往往会就问题本身引申出较深层次的问题.比如:你使用过with语句吗?我的回答是:with语句经常适用于对资源进行访问的场合,确保在访问的过程中不管是否发生异常都会指执行必要的清理操作,比如文件的自动关闭以及线程中锁的自动获取与释放.面试官紧接着问,那你知道为什么with语句能够使文件正确关闭,一下子把我问闷了,只能依稀记得with语句会开辟出一块独立环境来执行文件的访问,类似沙盒机制.面试官对这个答案不置可否,算是勉强通过了.所以知其然更要知其所以然.在

Linux系统下如何做到SSH免密码登录(转)

A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), 假如ip为172.24.253.2 ; A和B的系统都是Linux 在A上的命令: # ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码) # ssh [email protected] "mkdir .ssh;chmod 0700 .ssh" (需要输入密码, 注:必须将.ssh的权限设为700) # scp ~/.ssh/id_rsa.pub [ema

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT.桥接和Host-only] 作者:天齐 一.Windows和linux虚拟机之间联网实现SSH远程连接 假如我们要给主机名为mini1的虚拟机配置ip地址,需要以下几个步骤: 在linux上查看ip地址,如果linux服务器有ip地址,让它的ip地址和windows的ip地址在同一个网段,它们之间才能联网.在linux上查看ip地址的命令为"ifconfig": 发现eth0网卡没有配置i

linux dd命令参数及用法详解---用指定大小的块拷贝一个文件(也可整盘备份)

linux dd命令参数及用法详解---用指定大小的块拷贝一个文件 日期:2010-06-14 点击:3830 来源: 未知 分享至: linux dd命令使用详解 dd 的主要选项: 指定数字的地方若以下列字符结尾乘以相应的数字: b=512, c=1, k=1024, w=2, xm=number m if=file 输入文件名,缺省为标准输入. of=file 输出文件名,缺省为标准输出. ibs=bytes 一次读入 bytes 个字节(即一个块大小为 bytes 个字节). obs=b

Linux 利用Google Authenticator实现ssh登录双因素认证

1.介绍 双因素认证:双因素身份认证就是通过你所知道再加上你所能拥有的这二个要素组合到一起才能发挥作用的身份认证系统.双因素认证是一种采用时间同步技术的系统,采用了基于时间.事件和密钥三变量而产生的一次性密码来代替传统的静态密码.每个动态密码卡都有一个唯一的密钥,该密钥同时存放在服务器端,每次认证时动态密码卡与服务器分别根据同样的密钥,同样的随机参数(时间.事件)和同样的算法计算了认证的动态密码,从而确保密码的一致性,从而实现了用户的认证.因每次认证时的随机参数不同,所以每次产生的动态密码也不同

linux串口编程参数配置详解

1.linux串口编程需要的头文件 #include <stdio.h>         //标准输入输出定义 #include <stdlib.h>        //标准函数库定义 #include <unistd.h>       //Unix标准函数定义 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>          //文件控制定义 #incl

sshpass: 用于非交互的ssh 密码验证

ssh登陆不能在命令行中指定密码,也不能以shell中随处可见的,sshpass 的出现,解决了这一问题.它允许你用 -p 参数指定明文密码,然后直接登录远程服务器. 它支持密码从命令行,文件,环境变量中读取 $> sshpass -h Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters -f filename Take password to use from file -d number Use number as file descr

Linux 内核引导参数简介

概述 内核引导参数大体上可以分为两类:一类与设备无关.另一类与设备有关.与设备有关的引导参数多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导参数.比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导参数,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导参数说明.大多数参数是通过"__setup(... , ...)"函数设置的,少部分是通过"early_param(..

linux ./configure 的参数详解

转载自http://blog.csdn.net/zjt289198457/article/details/6918656 linux ./configure 的参数详解   ./configure 该脚本将运行一些测试来猜测一些系统相关的变量并检测你的操作   系统的特殊设置,并且最后在制做树中创建一些文件以记录它找到了什么. 缺省设置将制作服务器和应用程序,还有所有只需要C编译器的客户端程序和接口. 缺省时所有文件都将安装到   /usr/local/pgsql.         你可以通过给