繁体   English   中英

从脚本到远程服务器的SSH命令不起作用

[英]SSH commands from script to remote server not working

问候大家,

我有以下查询,希望对此有所帮助。

场景:

我的本地服务器(服务器A)连接到一台远程服务器(服务器B)。服务器B连接到另外10个远程服务器(Server-C ... Server-L)。 Server-A未直接连接到(Server-C ... Server-L),仅通过Server-B连接。

我设法在以下之间进行SSH密钥配对:

Server-A <----> Server-B
Server-B <----> Server-C....Server-L

现在,我可以使用以下命令从Server-A登录到Server-C:

从服务器A:

 ssh user-B@(IP-Server-B) -t ssh user-c@(IP-Server-C)
 ssh -t user-B@(IP-Server-B) -t scp  -oStrictHostKeyChecking=no test.file user-c@(IP-Server-C):/home/user-C

这是我的实际脚本:(从Server-A运行)

while read line
do

scp  -oStrictHostKeyChecking=no  test.file user-B@(IP-Server-B):/home/user-B
ssh -t  user-B@(IP-Server-B) -t  scp  -oStrictHostKeyChecking=no test.file mtc@$line:/home/mtc
ssh -t  user-B@(IP-Server-B) -t  ssh  -t -tqn user-c@$line sh /home/user-c/test.file
ssh -t  user-B@(IP-Server-B) -t  scp  user-c@$line:/home/user-c/junk.txt /home/user-B
ssh -t  user-B@(IP-Server-B) -t  ssh  user-c@$line rm -rf /home/user-c/junk.txt
scp  user-B@(IP-Server-B):/home/user-B/junk.txt .
mv junk.txt junk.txt_$line

done < LabIpList

这是服务器Server-c ... Server-L的IP地址列表。

cat LabIpList


1.2.3.4
2.3.4.5
3.4.5.6
4.5.6.7
5.6.7.8
6.7.8.9
7.8.9.10
....
.....

查询:

如果我在命令行上执行上述命令,则它们可以正常工作,但是,如果我将它们放在脚本中,则它们将失败。 由于两个原因:

  1. tcgetattr:设备的不适当的ioctl
  2. 伪终端将不会被分配
  3. 由于SSH密钥是最近交换的,因此用户必须手动键入yes才能将它们添加到know_hosts中。

我相信您已经使用ssh-keygen创建了无密码登录。请在脚本中使用以下ssh选项

ssh -t -t -tq <IP>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM