密码的SFTP连接问题

时间:2018-04-12 10:30:24

标签: linux shell unix ftp sftp

我正在运行这个脚本来复制本地的模式文件,但是即使传递硬编码值也要求输入密码。

脚本:

PASSWORD="xyz"

sftp -oport=1002 user@host:/dir/archive/file*.txt /di/data/
<< EOF

$PASSWORD

quit

EOF

收到错误:

-bash-4.1$ sh sftp_with_password.sh
Connecting to user@host...
Password Authentication

2 个答案:

答案 0 :(得分:1)

expect脚本可以完成这项工作。

例如 copy-sftp.exp

#!/usr/bin/expect
set password [lindex $argv 0]
spawn sftp -oport=1002 user@host:/dir/archive/file*.txt /di/data/
expect "Password"
send "$password\r"
send "quit\r"

然后你可以执行它:

expect copy-ftp.exp $PASSWORD

答案 1 :(得分:0)

感谢贡萨洛·马修(Gonzalo Matheu),我设法使用代理将send-sftp.exp传送到sftp:

#!/usr/bin/expect
set timeout -1
set password [lindex $argv 0]
set file [lindex $argv 1]
spawn sftp -o "ProxyCommand /usr/bin/connect -H <proxy-host>:<proxy-port> %h %p" <sftp-Username>@<sftp-HOST>
expect "password:"
send "$password\r"
expect "sftp>"
send "put $file\r"
expect "sftp>"
send "quit\r"

然后我执行它:

expect send-sftp.exp $PASSWORD /PATH/TO/MYFILE.zip

设置超时允许传输不因期望的等待超时而停止,您可以根据需要进行调整;)