我已经为这事挣扎了两天了。
我有两个linux机器A和B,并试图从A远程运行以下命令(就像在本地B上所做的那样):
sshpass -p 'somePassword‘ssh用户名@machineB "wget http://someUrl.com/someFile.zip“
someFile.zip应该下载并保持在B上,但是我得到了连接超时。在macnine上直接运行此命令可以正常工作。我想SSH有一些问题。
此脚本是TeamCity连续集成所必需的。
附注:sshpass只是一个通过ssh运行命令的实用工具,而无需通过指定密码进行用户交互。
有什么问题,如何解决?谢谢。
更新:对于非交互式会话,应该在~/..bashrc文件中指定代理设置。原因是代理设置在/etc/profile中,它只适用于交互式会话。
发布于 2014-05-19 08:38:43
我没有尝试sshpass,但我的猜测是连接超时是A连接到B,而不是B发出HTTP请求。我建议用SSH键代替,我很肯定这对你有用。
若要设置ssh键,请在A上运行以下命令:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ''
以上将创建一个长度为4096位的SSH密钥区,没有密码短语(-N '')。它在~/.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
在启用了RedHat的SELinux系统上,可能需要运行以下命令,以便系统能够使用授权的密钥文件接受:
restorecon -R -v ~/.ssh
以上允许包含authorized_keys文件中列出的任何公钥的私钥的服务器进入机器。
一旦你有了这个设置,你应该能够在没有密码的情况下从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'
发布于 2022-04-18 19:06:27
我也遇到过同样的问题,并尝试了各种方法来解决它。
当我打开DHCP的时候超时已经消失了。
我用VMWare。因此,解决办法如下:
Edit -> Virtual Network Editor ->复选框Use local DHCP service to distribute IP address to VMs
然后瞧。问题解决了。
https://stackoverflow.com/questions/23732829
复制相似问题