Na verdade, é apenas uma verruga do LFTP que até pede a senha. Se você fornecer uma senha simulada, como a string literal DUMMY
(por exemplo, lftp sftp://<username>:DUMMY@<target>
), o lftp não solicitará uma senha e verificará posteriormente com o agente ssh. Se você não tiver uma chave configurada, essa senha será usada.
Como alternativa, você pode sobrescrever a configuração sftp:connect-program
do lftp para forçar o uso do ssh para um arquivo de chave específico, sem ter que configurar o agente (a senha fictícia ainda será necessária). (Uma maneira) isso pode ser feito assim: lftp sftp://<username>:DUMMY@<target> -e 'set sftp:connect-program "ssh -a -x -i <yourprivatekeyfile>"'
.
O sftp:connect-program
é a opção que o lftp usa para criar a sessão sftp. O padrão é ssh -a -x
, mas pode ser praticamente qualquer comando (consulte a página do manual lftp para obter as restrições exatas). Aqui estou apenas adicionando a opção -i
para forçar uma chave privada específica.
(NOTA: todos os <xxx>
bits nos exemplos acima devem ser substituídos por valores reais.
Para corrigir algumas coisas na resposta aceita ...
-
não há um servidor FTP interno no SSH; O sftp é seu próprio protocolo, projetado como uma extensão do ssh. Só tem "ftp" no final porque é um protocolo de transferência de arquivos, eles compartilham muito pouco em comum em termos de detalhes.
-
Além disso, embora o LFTP possa se conectar ao FTP diretamente, ele também pode se conectar a uma tonelada outros protocolos. Ao conectar-se ao sftp, ele invoca diretamente o ssh para manipular o estabelecimento da conexão e, portanto, todos os métodos de autenticação ssh normais são aplicados. O comando que o LFTP usa para chamar o ssh pode ser reconfigurado através da sua opção sftp:connect-program
(daí a segunda alternativa listada acima).