ssh-agent와 함께 lftp 사용

ssh-agent와 함께 lftp 사용

SFTP 서버에 로그인하는 스크립트가 있습니다

eval `ssh-agent -s`
ssh-add /home/<username>/.ssh/id_rsa
sftp <username>@<target>

이것은 작동하지만 특정 날짜보다 최신 파일만 가져오고 싶습니다. sftp에서는 가능하지 않은 것 같아서 사용하고 싶습니다.원격 전송 프로토콜

lftp를 사용하여 동일한 스크립트를 실행하려고 하면

eval `ssh-agent -s`
ssh-add /home/<username>/.ssh/id_rsa
lftp <username>@<target>

비밀번호를 묻는 메시지가 나타납니다. ssh-agent와 함께 lftp를 사용할 수 있습니까, 아니면 비밀번호 제공을 피하는 다른 방법이 있습니까?

답변1

비밀번호가 필요한 것은 LFTP의 결함일 뿐입니다. 리터럴 문자열 DUMMY(예 lftp sftp://<username>:DUMMY@<target>: )과 같은 더미 비밀번호를 제공하는 경우 lftp는 비밀번호를 묻는 메시지를 표시하지 않고 SSH 에이전트로 비밀번호를 확인합니다. 키를 설정하지 않으면 비밀번호가~ 할 것이다사용.

sftp:connect-program또는 lftp의 설정을 재정의하여 ssh가 프록시를 설정하지 않고 특정 키 파일을 사용하도록 할 수 있습니다 (여전히 더미 비밀번호가 필요함). (한 가지 접근 방식)은 다음과 같이 수행할 수 있습니다 lftp sftp://<username>:DUMMY@<target> -e 'set sftp:connect-program "ssh -a -x -i <yourprivatekeyfile>"'.

이는 sftp:connect-programSFTP 세션을 생성하기 위해 lftp에서 사용하는 옵션입니다. 기본값은 this 이지만 ssh -a -x거의 모든 명령이 될 수 있습니다(정확한 제한 사항은 lftp 매뉴얼 페이지 참조). 여기서는 -i특정 개인 키를 강제로 사용하는 옵션을 추가했습니다 .

(참고: <xxx>위 예의 모든 비트는 실제 값으로 대체되어야 합니다.


허용되는 답변에서 무언가를 수정하려면 ...

  • SSH에는 내부 FTP 서버가 없습니다. sftp는 ssh의 확장으로 설계된 자체 프로토콜입니다. 파일 전송 프로토콜이고 세부적인 측면에서 공통점이 거의 없기 때문에 "ftp"로만 끝납니다.

  • 또한 LFTP는 FTP에 직접 연결할 수 있지만 다음에도 연결할 수 있습니다.기타 계약. sftp를 사용하여 연결하는 경우 ssh를 직접 호출하여 연결 설정을 처리하므로 일반적인 ssh 인증 방법이 모두 적용됩니다. LFTP가 ssh를 호출하는 데 사용하는 명령은 해당 sftp:connect-program옵션을 통해 재구성할 수 있습니다(따라서 위에 나열된 두 번째 대안).

답변2

가장 간단한 방법은 다음과 같습니다 lftp -u username, sftp://hostname.

사용자 이름 뒤의 문자가 ,해당됩니다.

답변3

사용자 이름 뒤에 콜론을 삽입하여 사이트 문자열 자체에 빈 비밀번호를 제공할 수도 있습니다.lftp sftp://<user>:@<site>

답변4

sftp비슷하게 들리지만 lftp"연결 및 인증 계층"에서는 공통점이 거의 없습니다. sftpSSH를 사용하여 연결 및 인증하고, 완료되면 SSH의 내부 SFTP 서버를 사용합니다. 기본 모드에서는 FTP 서버에 연결하며 SSH(따라서 그 중 하나) lftp와 아무 관련이 없습니다 . ssh-agentSFTP 서버에 연결할 수도 있지만 이 예에서는 관련이 없습니다.

관련 정보