`
wxl24life
  • 浏览: 293058 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用 sshpass 进行非交互式的 SSH 连接

阅读更多

首先,抱歉,这个标题很拗口。
说一下,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 这种方式并不安全,因此,实际生产环境下建议只在内网使用。

0
0
分享到:
评论

相关推荐

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

    它允许在命令行中提供 SSH 密码,从而实现非交互式的 SSH 连接。 **sshpass 的基本使用** `sshpass` 是一个开源工具,主要设计用于那些需要在脚本或无人值守环境中进行 SSH 连接的情况。通过 `sshpass`,你可以避免...

    sshpass 资源以及安装使用说明

    SSHPass是一款用于非交互...总结,SSHPass是Linux/Unix环境中进行非交互式SSH登录的实用工具,通过提供密码参数,可以方便地集成到自动化脚本中。安装和使用过程相对简单,但在实际应用中应确保安全性,避免密码泄露。

    通过SSHPASS执行命令及相关脚本

    标题中的“通过SSHPASS执行命令及相关脚本”是指在Linux环境下使用`sshpass`工具进行非交互式SSH登录并执行远程命令的技术。`sshpass`是一个命令行实用程序,它允许用户在不手动输入密码的情况下,通过SSH连接执行...

    sshpass - UNRAID、DSM

    总的来说,SSHPass 是一个实用工具,尤其在需要非交互式SSH连接的场景下。但在使用时,必须谨慎处理密码安全,遵循最佳实践,以防止潜在的安全威胁。在UNRAID和DSM这样的环境中,它可以帮助自动化和简化远程管理任务...

    sshpass-1.06.tar.gz

    总结,`sshpass` 是一个方便的工具,适用于需要非交互式SSH登录的场景。然而,使用时要谨慎,因为它可能会暴露密码。在可能的情况下,推荐使用SSH密钥对进行身份验证,以增强安全性。对于自动化任务,务必确保密码的...

    热-sshpass-1.10.zip

    在没有SSHPass的情况下,SSH连接通常需要用户交互式地输入密码,这在批量处理、脚本执行或无人值守的任务中非常不便。SSHPass解决了这个问题,使得在非交互式环境中也能完成SSH登录。 **如何使用SSHPass** 使用...

    sshpass-1.06 源码版本

    1. **无交互式登录**:SSHPass的核心功能是避免在命令行中手动输入SSH密码,这使得可以通过脚本或程序自动进行SSH连接。 2. **安全性考虑**:尽管SSHPass提供了便利,但使用它时应谨慎,因为它可能导致密码在命令...

    sshpass跨机器密码校验

    SSHpass允许用户在不使用交互式提示的情况下通过命令行提供SSH密码。这对于自动化流程非常有用,比如在无人值守的脚本中,你可能需要登录到远程服务器执行某些操作。使用SSHpass可以避免每次连接都需要手动输入密码...

    sshpass-1.06.tar.gz 安装包及安装说明

    SSHPass是Linux和Unix系统中一个实用的命令行工具,用于在执行SSH连接时提供密码。这个工具的主要目的是为了自动化那些通常需要手动输入密码的任务,比如脚本化的远程服务器管理或者持续集成流程。`sshpass-1.06.tar...

    sshpass-1.05.tar.gz-Web服务器工具类资源

    《SSHPass:非交互式SSH密码验证工具详解》 SSH(Secure Shell)是一种网络协议,用于在不安全的网络上安全地执行远程命令和传输数据。在日常的系统管理工作中,我们经常需要通过SSH连接到远程服务器进行各种操作。...

    bc、diff、patch、iperf、sshpass工具源码包

    **bc**: BC 是一个交互式的、高度可移植的编程语言,主要用于执行算术计算。它提供了类似计算器的功能,支持浮点运算,可以处理复杂的数学表达式。BC还允许用户编写脚本,用于自动化数学运算和数据分析。在Linux或...

    sshpass

    4. **非交互模式**:`sshpass` 可以与 `ssh` 命令结合,实现非交互式的远程操作,这对于自动化脚本非常有用。例如,可以使用 `sshpass` 和 `rsync` 在后台同步文件。 5. **环境变量**:你还可以将密码设置为环境...

    ssh sheepeat

    用户可能需要查看这个脚本来学习如何编写这样的自动化脚本,包括设置SSH密钥免密码登录,使用`expect`或`sshpass`库进行交互式命令执行,以及如何安排脚本定时运行等。 总结来说,这个"ssh sheepeat"项目可能是为了...

    Linux小工具,它允许你用 -p 参数指定明文密码,然后直接登录远程服务器 仅供自用

    它的主要功能是允许用户通过-p参数显式地指定SSH连接所需的密码,这样就无需交互式地输入密码,提高了自动化任务的效率。这对于那些需要频繁执行SSH登录但又不希望每次都手动输入密码的情况非常有用。 使用sshpass...

    shell脚本实现ssh-copy-id批量自动发送公钥到远程主机

    `sshpass`是一个用于提供非交互式SSH密码认证的工具。在脚本中,我们可以通过`sshpass`传递密码,然后使用`ssh-copy-id`将公钥发送到远程主机。以下是一个简单的示例脚本(`ssh-sshpass.sh`): ```bash #!/bin/...

    实现A机自动远程到B机,B机上自动使用sftp去C机取文件,然后将文件回传到A机

    3. **SFTP**:SFTP是SSH的一部分,提供一个交互式的文件传输系统,可以在安全连接上进行文件上传和下载。B机通过SFTP连接到C机,以安全方式获取文件。 4. **Expect**:Expect是一款Unix/Linux下的自动化脚本工具,...

    使用 Python ssh 远程登陆服务器的最佳方案

    `paramiko`是Python中广泛使用的SSH库,它支持SSH2协议,提供非交互式的密码登录和密钥登录。使用`paramiko`可以更优雅地管理SSH连接,支持连接复用和错误处理,适合全平台使用。以下是一个使用`paramiko`的例子: ...

    NcFtp内容.docx

    - 使用`expect`工具可以编写脚本来自动处理交互式的SSH会话,从而实现自动登录。 以上就是关于`sshpass`的基本介绍及使用方法。通过这些工具和技术的应用,可以极大地简化Linux主机间的同步操作,提升运维工作的...

    批量修改密码搭建环境所需包 (2).zip

    sshpass是一个命令行工具,允许用户在命令行中明文输入密码,以便于非交互式地使用SSH。 首先,我们需要安装sshpass。`sshpass-1.06.tar.gz` 是这个工具的源代码包,需要解压、编译并安装。解压后,按照通常的步骤...

    关于SSH 远程执行命令你要知道的二三事

    `sshpass`是一个简单的命令行工具,用于非交互式地通过SSH进行密码验证。使用前需要先安装`sshpass`,然后通过指定密码参数来执行远程命令。 - **安装**:`yum install sshpass` - **执行命令**: ```bash ...

Global site tag (gtag.js) - Google Analytics