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-program
SFTP 세션을 생성하기 위해 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
"연결 및 인증 계층"에서는 공통점이 거의 없습니다. sftp
SSH를 사용하여 연결 및 인증하고, 완료되면 SSH의 내부 SFTP 서버를 사용합니다. 기본 모드에서는 FTP 서버에 연결하며 SSH(따라서 그 중 하나) lftp
와 아무 관련이 없습니다 . ssh-agent
SFTP 서버에 연결할 수도 있지만 이 예에서는 관련이 없습니다.