如何在ssh脚本中获取嵌套的sftp以等待密码提示

时间:2019-06-08 06:26:47

标签: bash unix ssh pipe sftp

我想在这里完成的工作如下。我想从该服务器ssh到服务器,再sftp到另一台服务器,检索文件,存储它,然后从中检索一些信息,并将其存储在file变量中。问题是,client@server.com需要密码,并且当sftp脚本中使用sftp命令时,它不会立即要求用户输入密码。在继续执行脚本的其余部分之前,如何让脚本等待用户输入密码。

KEYPAIR="..."
PUBLIC_DNS="..."
ssh -i $KEYPAIR "ec2-user@$(sed -e 's/^"//' -e 's/"$//' <<<"$PUBLIC_DNS")" << EOF

    echo "Finding latest file"
    echo ls -t | sftp client@server.com > files.txt
    file=$(head -n 2 files.txt | sed -n '2p')

EOF

1 个答案:

答案 0 :(得分:1)

关于sftp密码身份验证的选项如何:从第一台服务器将〜/ .ssh / id_rsa.pub安装到anotherServer上的〜/ .ssh / authorized_keys。然后,您在anotherServer上的sftp会话将开始通过身份验证。因此,第一台服务器上的脚本随后可以派生所需的信息,而无需再键入密码。