带密码的 SFTP 连接问题

SFTP connection issue with password

我是运行这个脚本,用于在本地复制模式文件,但它要求输入密码,甚至传递硬编码值。

脚本:

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

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

感谢 Gonzalo Matheu,我已经成功地使用代理发送了一个大文件到 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

set timeout 可以让传输不被expect的wait timeout停止,你可以根据自己的需要进行调整;)