在bash脚本中将密码传递给sftp

时间:2012-09-20 07:51:09

标签: bash passwords sftp

我想自动化一个bash脚本,它使用sftp连接到服务器并进行文件传输。我有这个密码,最初我试过这个

sftp $acc@$host << EOF
<passwd_here>
cd $dir
get $file
quit
EOF

但它仍然提示输入密码,我必须在提示时手动输入密码。

搜索完SO后,我发现this post有一个expect的解决方案,我试过了,我收到了以下错误:

脚本:

sftp -b cmdfile.txt $acc@$host
expect "Password:"
send "<passwd>\n";
interact

错误:

Permission denied (publickey,keyboard-interactive).

cmdfile.txt

cd $dir
get $file
quit

请告诉我,如何使用bash脚本中的密码进行连接?

3 个答案:

答案 0 :(得分:5)

请尝试以下步骤

lftp -u $user,$pass sftp://$host << --EOF--
cd $directory
put $srcfile
quit
--EOF--

答案 1 :(得分:-1)

是基于密钥的身份验证是可行的方法。 检查here是否有某种方向。

答案 2 :(得分:-2)

使用scp / sftp,您应该使用基于密钥的身份验证。要将要验证的用户的公钥复制到服务器上的〜/ .ssh / authorized_keys文件中,进入要登录的用户的主目录。在客户端以明文形式存储密码不是一个好习惯,你知道:)这样你就可以“解决”从提示中读取密码的问题。