sshpass:找不到命令错误

Posted

技术标签:

【中文标题】sshpass:找不到命令错误【英文标题】:sshpass: command not found error 【发布时间】:2016-11-02 22:42:46 【问题描述】:

我正在尝试自动执行从一台服务器到另一台服务器的文件传输或 FTP。

#!/bin/bash
### In this model, the same filename is processed on each run.
### A timestamp is added to the result file and data file is copied to the archive or error folder with a timestamp after processing.

# Set current directory
cd `dirname "$0"`

# Set the environment variables
. ./Environment.sh $0

#######################################################################################################
# 
#######################################################################################################


FILE=/hcm/Inbound/file.csv

sshpass -p 'xyz' sftp -oBatchMode=no -b - -oStrictHostKeyChecking=no zys@192.abc.taleo.net <<_EOF_

cd /upload/

put $FILE

_EOF_

# Exit
exit $?

当我执行这个 shell 脚本时,我在 putty 中收到以下错误:

 -bash: sshpass: command not found

我尝试通过ssh-keygen -t dsa 和其他步骤使用ssh 无密码方法,但我无法访问第二台服务器的腻子,因此无法执行后续步骤。

请帮忙

【问题讨论】:

“无法访问第二台服务器的putty”?赦免?您可以通过多个跃点使用无密码 SSH,方法是将您的密钥加载到代理中(顺便说一句,RSA 密钥优于 DSA)并启用代理转发;您实际上不需要在退回主机上提供私钥。 顺便说一句,exit $? 是完全多余的:exit 默认通过前一个命令的退出状态。此外,您在这里遗漏了一些引文——shellcheck.net 会识别出来。 【参考方案1】:

您需要在运行代码的客户端服务器上安装 sshpass,这是大多数 Linux 发行版默认未安装的工具

如果你在 Ubuntu 中使用这个命令

apt-get 安装 sshpass

在 centOS/redhat 上使用这个 安装epel

wget https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm -ivh epel-release-6-8.noarch.rpm

安装 sshpass

yum --enablerepo=epel -y 安装 sshpass

谢谢

【讨论】:

我编辑了答案,包括在centos/redhat中的安装方式,你用什么操作系统? 加载的插件:refresh-packagekit,安全 获取 epel 的存储库数据时出错,未找到存储库 您的 Linux 发行版是什么?像ubuntu,centOS redhat等?它是什么版本? 对不起,新来的 linus。对此没有任何想法。有找到它的命令吗? 在此处执行命令以了解您的发行版 cyberciti.biz/faq/find-linux-distribution-name-version-number 并告诉我【参考方案2】:

NO!!!! 不要安装 sshpass。它不适合您的工作。

它不是为您的用例编写的,如果您确实使用它,您的脚本的安全性将大大降低。我应该知道我在说什么。我写的。

相反,使用调试信息运行您的服务器,并找出您未能设置基于密钥的身份验证的原因。最好以各种可能的方式使用sshpass

【讨论】:

我无法访问服务器 2 上的 putty 然后你用谷歌搜索“设置公钥身份验证”,然后使用-vv 运行 ssh 以查看它尝试了哪些身份验证方法,如果一切都失败了,你会问为什么公钥不起作用(假设其他 7,283,093 次人们问这个问题都对你没有帮助)。在可以进行公钥身份验证的情况下,您不要使用 sshpass 谢谢!哈尼建议的工作!所以我认为我的问题得到了回答:) 通常我会同意,但我们中的一些人无法控制我们尝试连接的主机的管理。就我而言,我很想使用 SSH AuthorizedKeys 方法,但我们的管理员拒绝这样做,坚持要密码。【参考方案3】:

我为 CentOS 7 找到的一个解决方案:

    从here下载sshpass

然后会下载rpm。

    将此 rpm 传输到您的 linux 系统(您可以使用 filezilla 等)。 使用:yum install &lt;rpm file name&gt; 安装 Rpm。

完成

【讨论】:

sshpass 的链接已损坏。 Updated Link

以上是关于sshpass:找不到命令错误的主要内容,如果未能解决你的问题,请参考以下文章

易语言的错误怎么办错误(36): 找不到指定的对象成员命令名称“创建内存”

易语言:错误(36): 找不到指定的对象成员命令名称“打开”。

易语言问题 错误(36): 找不到指定的对象成员命令名称“取文本长度”。

Python discord bot“找不到命令'ban'”错误

“svnrdump”命令得到“svnrdump:找不到命令”错误

cygwin $'\r': 找不到命令错误