带有密钥+密码的lftp [关闭]

Posted

技术标签:

【中文标题】带有密钥+密码的lftp [关闭]【英文标题】:lftp with key + passphrase [closed] 【发布时间】:2012-07-19 14:19:27 【问题描述】:

我正在使用 lftp 将文件发送到 SFTP 服务器,但我不知道如何使用密钥和密码进行连接。

所以在sftp,我可以这样做:

sftp -i .ssh/id_rsa.mykey login@my.host.fr
Enter passphrase for key '.ssh/id_rsa.mykey': my passphrase here

那么,这种连接方式如何使用lftp呢?

【问题讨论】:

lftp 是一个客户端,它支持多种协议(ftp, ftps, sftp, ...),那么您要使用哪种协议呢?例如 ftp 不支持公钥身份验证,因此您只能使用用户名+密码。 我正在使用 sftp,所以我可以在我的密钥中使用密码。我试过这个:lftp -e "set ssl:key-file .ssh/id_rsa.mykey" sftp://my.host.fr 但它没有用...... 你为什么不使用 scpsftp 命令,它们为基于 ssh 的协议提供了更好的支持......似乎与 lftp 一起工作的是使用 ssh-add 添加运行中的ssh-agent 的私钥,lftp 然后使用它。 因为很紧急,我已经使用了sftp,但是如果我们找到解决方案,我的客户希望将来使用lftp。现在,它正在工作,谢谢你,mata! 【参考方案1】:

一个基于 Jean-Luc Boss's 和 wiak 的答案,但更明确一点:

要连接到服务器,lftp 使用ssh 命令,默认为ssh -a -x。它没有用于更改要使用的密钥文件的显式选项,但正如您所注意到的,ssh 有,因此我们只需在连接之前将lftp 设置为使用ssh -a -x -i <keyfile> 进行连接。

您可以通过以下几种方式做到这一点:

如果您使用的是 lftp 的交互式命令行,请在连接之前运行以下命令:

  set sftp:connect-program "ssh -a -x -i <keyfile>"

如果您使用 -clftp 指定一组命令,只需将该 set 命令添加到命令序列的开头即可:

  lftp -c 'set sftp:connect-program "ssh -a -x -i <keyfile>"; connect sftp://user@example.com; mirror -eR files; ...'

如果您总是想使用相同的密钥,只需将第一个项目符号中的 set ... 行添加到您的 ~/.lftprc 文件(或 man lftp 中列出的其他配置文件选项之一)。

【讨论】:

@user151841 好地方,我现在就修。 谁是“wiak”?... @PeterMortensen 不知道;我认为是其他回答者之一(可能是this one)后来改变了他们的处理方式,但我大约七年前写了这篇文章,所以我担心我的记忆没有那么详细!【参考方案2】:

您必须指定用户名,并且只需传递任何密码作为密码,即可跳过询问。

lftp -u user,xxx sftp://...

【讨论】:

lftp -u user, sftp://hostname 也有效(注意逗号) 由于某种原因,如果您需要发送私钥和密码,这将不起作用。密码未发送,或未正确发送。【参考方案3】:

只需添加:

set sftp:connect-program "ssh -a -x -i yourprivatekeyfile"

到您的~/.lftprc,因为大部分设置都可以在那里永久设置。

【讨论】:

【参考方案4】:

LFTP 似乎没有通过或没有将“ssl:key-file”指定的身份文件用于 SSH。您必须在 sftp:connect-program 选项中指定它:

ssh -a -x -i yourprivatekeyfile

这应该可行。

【讨论】:

以上是关于带有密钥+密码的lftp [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

通过带有指纹的 android 密钥库检索用户凭据(用户名和密码)

ssh的配置,ssh打开密钥登陆,关闭密码登陆。

图解密码技术------第5章公钥密码

图解密码技术------第5章公钥密码

使用 MFC 6 的带有密码的管理员登录页面? [关闭]

lftp,wget