你怎么能用sftp做一个单行来用同一行的密码登录?

Dan*_*iel 26 sftp

是否可以选择将密码也与 sftp 放在一起?

linux~ $ sftp USERNAME@FTP.WEBSITE.COM:/DIRECTORY_TO_GO_TO/ 
Run Code Online (Sandbox Code Playgroud)

像这样

linux~ $ sftp USERNAME@FTP.WEBSITE.COM:/DIRECTORY_TO_GO_TO/ -p PASSWORD? 
Run Code Online (Sandbox Code Playgroud)

小智 53

正如其他人所提到的,命令行密码应该是最后的手段。

然而,如果没有别的可能;一个可以去ssh pass

sshpass -p <password> sftp user@host
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的解决方案。OP 询问如何做这件特定的事情——不是为了安全建议(尽管是善意和正确的)。 (7认同)
  • 这应该得到大量赞成。有sshpass真的很有用。某些提供程序不允许您创建 .ssh 文件夹,也不允许 scp。 (3认同)
  • 好在一些工具支持你:`brew search sshpass`——“我们不会添加 sshpass,因为它让 SSH 新手用户很容易破坏 SSH 的安全性。” (3认同)

Zor*_*che 18

通常在命令行中包含密码被认为是一种安全风险,因为它会显示给可以运行 ps/top 的任何其他人,并且它可能会保存在您的 shell 的历史记录中。

如果可以,最好设置基于密钥的身份验证。

另外,我不相信使用 sftp 是可能的。它旨在用于安全传输。如果你真的不得不做这样的事情并且你别无选择,那么你可能需要考虑使用expect进行自动化。

  • 不明白为什么人们会赞成一个没有提供解决方案的答案。 (10认同)

Mik*_*eyB 7

不要那样做 - 为自动登录设置 SSH 公钥认证。


mon*_*yth 6

只需使用 perl、ruby 或 python 来编写您要执行的操作的脚本。在 ruby​​ 的情况下,它只是(取自 net-sftp API 文档):

require 'net/sftp'

Net::SFTP.start('host', 'username', :password => 'password') do |sftp|

  # upload a file or directory to the remote host

  sftp.upload!("/path/to/local", "/path/to/remote")

end
Run Code Online (Sandbox Code Playgroud)

有关更多信息http://net-ssh.rubyforge.org/sftp/v2/api/index.html