远程通过ssh运行wget命令但连接超时

时间:2014-05-19 08:16:27

标签: linux ssh wget

我已经在这2天内苦苦挣扎了。

我有2台Linux机器A和B,并尝试远程运行以下命令(因为它将在本地B上完成):

sshpass -p' somePassword' ssh userName @ machineB" wget http://someUrl.com/someFile.zip"

someFile.zip应该下载并保存在B上但我得到连接超时。 在macnine B上运行此命令可以正常工作。我认为SSH存在一些问题。

TeamCity持续集成需要此脚本。

P.S。 sshpass只是一个通过ssh运行命令的实用程序,无需用户交互,只需指定密码即可。

问题是什么以及如何解决?谢谢。

更新:应在〜/ .bashrc文件中为非交互式会话指定代理设置。原因是代理设置位于/ etc / profile中,仅适用于交互式会话。

1 个答案:

答案 0 :(得分:2)

我没有尝试过sshpass,但我的猜测是连接超时是A连接到B,而不是B发出HTTP请求。我建议使用SSH密钥,我非常肯定会为你工作。

要设置ssh密钥,请在A:

上运行此命令

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ''

以上将创建一个长度为4096位且没有密码短语(-N '')的SSH RSA密钥对。它在~/.ssh中写入两个文件;将公钥复制到B:

scp ~/.ssh/id_rsa.pub B:

在服务器B上执行此操作:

mkdir ~/.ssh chmod 0700 ~/.ssh cat id_rsa.pub >> ~/.ssh/authorized_keys chmod 0600 ~/.ssh/authorized_keys

在启用了SELinux的RedHat系统上,可能需要运行以下命令,以便系统使用授权密钥文件接受:

restorecon -R -v ~/.ssh

以上允许包含authorized_keys文件中列出的任何公钥的私钥的服务器通过SSH连接到计算机。

完成设置后,您应该能够在没有密码的情况下从A到B进行ssh。

以下命令甚至可以通过cronjob在我的系统上运行:

ssh -i ~/.ssh/id_rsa foobar.local 'curl -O https://www.google.com/logos/doodles/2014/rubiks-cube-5658880499515392-res.png'