Answers:
通常,在命令行中包含密码被认为是安全隐患,因为它会向可以运行ps / top的其他任何人显示,并且可能会保存在您的Shell历史记录中。
如果可以的话,最好设置基于密钥的身份验证。
另外,我认为sftp不可能实现。它旨在用于安全传输。如果你真的不得不做这样的事情,你有没有其他的选择,那么你可能必须寻找与自动化期待。
正如其他人提到的那样,命令行密码应该是最后的选择。
但是,如果没有其他可能的话;可以通过ssh pass
sshpass -p <password> sftp user@host
brew search sshpass
-“我们不会添加sshpass,因为它使SSH新手很难破坏SSH的安全性。”
不要这样做-设置SSH公钥身份验证以自动登录。
只需使用perl,ruby或python编写脚本即可。如果是红宝石,它只是(摘自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
有关更多信息,请访问http://net-ssh.rubyforge.org/sftp/v2/api/index.html
如其他答案所述,请使用公共密钥身份验证。有一个很棒的IBM developerWorks系列文章,尽管过时了,它应该解释您想要了解的一切,以及一些有用的补充工具,例如钥匙串。
对于不在乎可以在命令行命令中看到密码的搜索者:
sftp userid:password@remoteHost
是如何在sftp
connect命令中包括密码的。
更新:事实证明这是不正确的...查看评论