我想自动化一个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脚本中的密码进行连接?
答案 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文件中,进入要登录的用户的主目录。在客户端以明文形式存储密码不是一个好习惯,你知道:)这样你就可以“解决”从提示中读取密码的问题。