【问题标题】:sshpass: command not found errorsshpass:找不到命令错误
【发布时间】: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 会识别出来。

标签: linux shell unix ssh sshpass


【解决方案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 找到的一个解决方案:

  1. here下载sshpass

然后会下载rpm。

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

完成

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2019-10-22
  • 2016-03-24
  • 2016-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多