1

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

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

但它仍然提示输入密码,我不得不在提示符下手动输入。

搜索 SO 后,我发现这篇文章有一个解决方案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 脚本中使用密码进行连接?

4

3 回答 3

5

请尝试以下步骤

lftp -u $user,$pass sftp://$host << --EOF--
cd $directory
put $srcfile
quit
--EOF--
于 2014-06-25T08:34:05.827 回答
-2

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

于 2012-09-20T07:55:59.850 回答
-2

是的,基于密钥的身份验证是要走的路。在这里查看一些方向。

于 2012-09-20T08:01:38.650 回答