我有一个脚本可以登录到sftp服务器。
eval `ssh-agent -s`
ssh-add /home/<username>/.ssh/id_rsa
sftp <username>@<target>这是可行的,但我希望只获得比特定日期更新的文件。这在sftp看来是不可能的,所以我想使用lftp
如果我尝试使用lftp运行相同的脚本
eval `ssh-agent -s`
ssh-add /home/<username>/.ssh/id_rsa
lftp <username>@<target>我得到密码提示。是否可以在ssh-agent中使用lftp,或者是否有其他方法可以避免提供密码?
发布于 2015-01-29 12:23:48
sftp和lftp听起来很相似,但在“连接和身份验证层”上几乎没有共同点。sftp使用SSH进行连接和身份验证,并在完成之后使用SSH的内部SFTP服务器。在默认模式下,lftp连接到FTP服务器,与SSH没有关系(因此也与ssh-agent无关)。它也可以连接到SFTP服务器,但在这种情况下不相关。
发布于 2015-05-22 13:43:19
它实际上只是LFTP的一个疣,它甚至要求密码。如果您提供了一个虚拟密码,例如文字字符串DUMMY (例如lftp sftp://<username>:DUMMY@<target>),lftp将不会提示输入密码,然后将与ssh代理进行检查。请注意,如果您没有设置密钥,该密码将被使用。
或者,您可以重写lftp的sftp:connect-program设置以强制ssh用于特定的密钥文件,而不必设置代理(仍然需要虚拟密码)。(一种方法)可以这样做:lftp sftp://<username>:DUMMY@<target> -e 'set sftp:connect-program "ssh -a -x -i <yourprivatekeyfile>"'。
sftp:connect-program是lftp用于创建sftp会话的选项。它默认为ssh -a -x,但几乎可以是任何命令(确切的限制请参见lftp手册页)。在这里,我只是附加了-i选项来强制使用一个特定的私钥。
(注意:上述示例中的所有<xxx>位都应替换为实际值。
为了纠正被接受的答案中的一些事情..。
sftp:connect-program选项(因此上面列出的第二个选项)重新配置。发布于 2018-07-11 16:54:14
最简单的方法是:lftp -u username, sftp://hostname。
用户名后的,字符起了作用。
https://unix.stackexchange.com/questions/181781
复制相似问题