最近,一些VOS和OpenVOS的客户已经从使用标准的ftp客户端(ftp.pm)转为使用安全的ftp客户端(sftp.pm)。 使用sftp而不是ftp有两个主要原因。 首先,sftp从来不会以明文形式发送密码,它总是加密的。第二,sftp在传输过程中对数据进行加密。 然而,似乎许多客户编写了VOS命令宏,为ftp提供了一个"罐头"用户ID和密码,他们注意到,虽然你可以预先指定用户ID到sftp,但没有办法预先指定密码。 你必须等待sftp命令提示输入密码,然后在键盘上输入。
这是所有操作系统上 sftp 的标准程序。 你可能一开始并不喜欢这种行为,但 sftp 是在帮你的忙,它故意直接从终端读取密码,而不是从"stdin"读取。 它故意直接从终端读取密码,而不是从"stdin"中读取。 sftp的作者认为,将密码放入文件或shell脚本中是很糟糕的做法;它是非常不安全的。
幸运的是,sftp的作者为这个问题提供了一个很好的解决方案。 他们通过公钥机制实现了用户认证。 如果你把你的私钥放在源模块(使用 sftp 或 ssh 命令的机器)上你的主目录下的 .ssh 子目录中,并把你的公钥放在目标模块上的同一目录中,那么你就可以登录(或使用 sftp)而无需提供密码。
这样做是安全的,因为软件在使用你的私钥之前,会检查是否有其他人可以修改你的主目录,以及其他人不能读取你的.ssh子目录中的文件。 由于只有你的公钥被保存在远程服务器上,即使远程服务器被入侵,也不存在安全问题,因为根据定义,你的公钥是公开的;任何人都可以读取它。你的私钥总是保留在你的本地机器上,永远不会在网络上传输。 这是SSH2协议的一个基本属性。 破解该协议所需的计算机能力远远超出了目前的可用范围。 即使有人可以查看所有的数据包,该协议也是安全的。
所以,不要担心sftp命令不是ftp的替代品。 在享受它在易用性方面的改进的同时,也要利用它的安全性。 摆脱那些静态密码,转而使用公钥/私钥。