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 <rpm file name>
安装 Rpm。
完成
【讨论】:
sshpass
的链接已损坏。 Updated Link以上是关于sshpass:找不到命令错误的主要内容,如果未能解决你的问题,请参考以下文章
易语言的错误怎么办错误(36): 找不到指定的对象成员命令名称“创建内存”
易语言:错误(36): 找不到指定的对象成员命令名称“打开”。
易语言问题 错误(36): 找不到指定的对象成员命令名称“取文本长度”。
Python discord bot“找不到命令'ban'”错误