如何使用sftp进行一次班轮登录,并在同一行上使用密码登录?


17

是否可以将密码与sftp一起放在网上?

linux~ $ sftp USERNAME@FTP.WEBSITE.COM:/DIRECTORY_TO_GO_TO/ 

像这样

linux~ $ sftp USERNAME@FTP.WEBSITE.COM:/DIRECTORY_TO_GO_TO/ -p PASSWORD? 

Answers:


13

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

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

另外,我认为sftp不可能实现。它旨在用于安全传输。如果你真的不得不做这样的事情,你有没有其他的选择,那么你可能必须寻找与自动化期待


有趣的一点!
丹尼尔(Daniel)2009年

如果可以的话,最好设置基于密钥的身份验证。这是有道理。
网络赛跑者

这种预期网址被打破
安德烈Perazzi

4
无法理解为什么人们赞成没有提供解决方案的答案。
itoctopus

34

正如其他人提到的那样,命令行密码应该是最后的选择。

但是,如果没有其他可能的话;可以通过ssh pass

sshpass -p <password> sftp user@host

2
应该大力反对。拥有sshpass真的很有用。一些提供程序不允许您创建.ssh文件夹,也不允许使用scp。
NetSquirrel

2
有益的是有些工具可以帮助您:brew search sshpass-“我们不会添加sshpass,因为它使SSH新手很难破坏SSH的安全性。”
奥利弗·

4
这应该是公认的解决方案。OP询问如何执行此特定操作-并非出于安全建议(尽管是出于正确和正确的考虑)。
ebr


5

只需使用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


paramiko是纯python(没有额外的库),效果很好
qwertzguy 2012年

3

如其他答案所述,请使用公共密钥身份验证。有一个很棒的IBM developerWorks系列文章,尽管过时了,它应该解释您想要了解的一切,以及一些有用的补充工具,例如钥匙串。


2

对于不在乎可以在命令行命令中看到密码的搜索者:

sftp userid:password@remoteHost是如何在sftpconnect命令中包括密码的。

更新:事实证明这是不正确的...查看评论


红帽企业版上的OpenSSH v5.3p1和v4.3p2 ...
ashnazg

1
事实证明这是不正确的...该方法似乎对我有用,因为在我的代码中较早使用了PHP及其ssh2扩展名来进行实际的独立身份验证...并且稍后运行了sftp命令。在后面的文章中,语法似乎成功了。
ashnazg

1
无法解析主机名用户:未知此类主机。它正在考虑用户名中的“:”,而FileZilla CLI中不是这种情况
P Satish Patro

1

我怀疑答案和FTP客户端一样多。在建立加密之前,SFTP服务器不应接受身份验证信息,以便保护用户和密码。

我相信FileZilla客户端将允许用户和密码通过命令行传递..请参阅此处的文档。鉴于FileZilla项目的声誉,我希望它能够安全运行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.