sftp 脚本从远程计算机获取文件

sftp 脚本从远程计算机获取文件

我使用一个脚本,其中包含以下行:

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

相关内容