我使用一个脚本,其中包含以下行:
sftp [email protected]:/dir/file.txt
当我运行脚本时,它会询问我的密码:
[email protected]'s password:
但是,我不希望系统提示我输入密码。我希望我的脚本自动输入密码并下载文件
伙计们,我不想这样做。我只想捕捉脚本中的提示并输入密码。是否可以?
sshpass 属于 bash 吗?
这根本不起作用
答案1
SFTP 基本上是服务器端的 SSH + SFTP,因此您需要某种非交互式身份验证,例如私钥和公钥。根据您使用的操作系统,您可以使用命令生成密钥ssh-keygen
并将公钥复制到服务器ssh-copy-id
。
答案2
最好的简单方法:
sshpass -p 'password123' scp -- [email protected]:/dir/file.txt /local/dir
sshpass
必须工作,而且sftp
...不要忘记检查带有写入密码的脚本的权限。
更新:您需要通过命令安装 sshpass (对于基于 debian 的发行版):
apt-get install sshpass
答案3
自动化此过程的另一种方法是使用 Expect 脚本。这是一个例子:
例如:
#!/usr/bin/expect -f
spawn sftp [email protected]:/dir/file.txt
expect "[email protected]'s password :"
send "mypassword123\r"
send "exit\r"
您可以获取更多关于期望的信息这里或者只是谷歌它
答案4
您应该使用基于密钥的身份验证,这样您就不需要密码。
以下是有关如何执行此操作的详细操作方法: http://www.debian-administration.org/article/530/SSH_with_authentication_key_instead_of_password