首先,抱歉,这个标题很拗口。
说一下,sshpass 能干吗。我们在终端命令行下直接用 ssh 连接远程主机时,默认状态下,会提示输入密码。可以看到,这个步骤实际上是在终端下以交互式的方式完成的 — 终端给提示,用户手动输入密码。
由于需要人工参与,在脚本中进行自动化的 ssh 远程连接就不可能实现了。
在自动化脚本中进行 ssh 连接,我知道的方式有三种:
1. 通过 ssh-key 的方式建立两台机器间的互相信任关系
2. 借助 sshpass 工具,将密码以参数的方式提供
3. 借助 expect,将密码在脚本中提供
本文只介绍第 2 种方式。
sshpass 是一个工具,通过它可以做这样一件事:将远程主机的密码以参数的形式提供给 sshpass 之后,再执行 ssh 连接时就不需要交互式的人工输入密码了。
用法很简单:
$ sshpass -p password ssh username@host
但是,实际使用时发现,当第一次连接某台主机时,执行上面这条 sshpass 命令没有任何反应。把 sshpass 部分去掉,单独使用 ssh 连接该主机时,发现了规律。
$ ssh myusername@10.x.x.x
The authenticity of host ’10.x.x.x (10.x.x.x)' can't be established.
RSA key fingerprint is a4:eb:8c:7d:2a:ef:d6:1c:a3:0c:e8:e5:00:d2:eb:60.
Are you sure you want to continue connecting (yes/no)?
即:ssh 结合 sshpass 使用,碰到首次连接一台主机的情况时,上面这行提示被吞没掉了。
如果确定首次连接的主机是安全的,可以对 sshpass 命令下的 ssh 添加选项:-o StrictHostKeychecking=no
完整命令如下:
$ sshpass -p password ssh -o StrictHostKeychecking=no username@host
另外,由于 scp 使用 ssh 方式进行远程主机间文件复制,因此,sshpass 也可以作用于 scp。
scp + sshpass 例子如下:
$ sshpass -p password scp -o StrictHostKeychecking=no -r username@host:~/test ~
--------------
好玩儿的地方:
在 Mac OS X 下通过 brew install 方式安装 sshpass 时,碰到下面的话:
$ brew install sshpass
Error: No available formula for sshpass
We won't add sshpass because it makes it too easy for novice SSH users to
ruin SSH's security.
看来 sshpass 这种方式并不安全,因此,实际生产环境下建议只在内网使用。
相关推荐
sshpass: 用于非交互的 ssh 密码验证 sshpass: 用于非交互的 ssh 密码验证 sshpass: 用于非交互的 ssh 密码验证
今天小编就为大家分享一篇python获取交互式ssh shell的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
下面小编就为大家带来一篇浅析mysql交互式连接&非交互式连接。小编觉挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
bash 调用expect ssh到cisco设备,通过tftp方式备份配置 已经测试通过,并上到生产服务器 前提要先架设好TFTP服务器并测试通过
数据可视化实战:使用D3设计交互式图表.pdf+源码。
nodejs-ssh-终端nodejs 中的交互式 SSH 终端。 它不到 30 行,所以应该很容易理解。需要 ssh2 需要 ssh2 才能运行。 请阅读 ssh2 文档以使用密钥访问。 使用以下命令安装: npm install ssh2
代码 八种降维方法交互式界面代码 八种降维方法交互式界面代码 八种降维方法交互式界面代码 八种降维方法交互式界面代码 八种降维方法交互式界面代码 八种降维方法交互式界面代码 八种降维方法交互式界面代码 八种...
我们构建了一个系统,为冯·诺依曼RISC体系结构上的程序执行提供简洁的非交互式零知识证明(zk SNARKs)。该系统由两部分组成:一个用于验证算术电路可满足性的密码验证系统,以及一个用于将程序执行转换为此类电路...
使用VC++.NET开发交互式CAD系统,对于矢量图象编程很有帮助
数据可视化实战:使用D3设计交互式图表
描述了一些关于交互式shell和非交互式shell的区别,属于概念性的东西。
自己用vs2019编写的,首先要安装putty,然后才能调用putty.exe。经测试,可以运行。
传统的、非 交互式报表 由创建单个 列表的一个 程序组成。 这意味着启 动报表之后 ,它创建的 列表必须包 含所有要求 的数据,而 不管用户想 查看的细节 的数目。该 过程可能导 致扩展列表 ,用户必须 从该列表中 ...
Linux方便的ssh非交互工具sshpass,使用sshpass实现自动ssh和自动scp。sshpass-1.06-1.el7.x86_64.rpm
该PPT详细介绍了基于MFC的交互式绘制多边形的方法
本文件包含了畅言交互式多媒体教学系统安装包和配套的本地语音合成引擎,仿真实验资源安装包,教育基础资源安装包和配置更新;还有畅言交互式多媒体教学系统丰富的课本资源。 畅言简介:畅言交互式多媒体教学系统是...
pscp_pssh的非交互式操作 备注:本代码仅供个人学习了解非交互式操作所用,涉及安全漏洞后果自负 主要文件 INSTALL pexpect.py pscp pssh scp_echo —————————————————————————— 1)创建...
hss是一款可交互式的ssh批量执行命令的客户端,交互输入模式基于libreadline实现,使你能像操作bash一样地输入需要执行的命令,同时也支持命令搜索,历史命令纪录等。
Linux内核交互式和非交互式进程判别算法的质疑.pdf