lftp는 sftp 연결의 netrc를 읽을 수 있습니다.

lftp는 sftp 연결의 netrc를 읽을 수 있습니다.

SFTP를 통해 서버에 일부 파일을 업로드하는 스크립트를 만들려고 합니다. 대화형 lftp 세션을 열고 거기에 사용자 이름과 비밀번호를 제공하여 이 작업을 수동으로 수행할 수 있습니다. 내 생각엔 대본의 경우

  • (명백한 이유로) 스크립트에 자격 증명을 하드코딩하지 마세요.
  • 명령줄에서 언급하지 마세요. (저는 .bash_history에 포함하고 싶지만 자격 증명은 필요하지 않습니다.)
  • lftp바우처 .netrc또는 이와 유사한 내용을 읽어보세요 .

나는 이것을 작동시킬 수없는 것 같습니다. 현재 해결 방법은 자격 증명을 구문 분석 .netrc하고 이를 lftp 스크립트에 추가한 다음 제거하는 래퍼 스크립트입니다 . 이는 수동으로 수행하는 단계를 시뮬레이션하지만 기존 기능을 다시 구현하여 효과가 좋지 않은 것 같습니다. 이것이 작동하는 동안 문제는 남아 있습니다.

lftp는 SFTP 연결을 위해 .netrc를 읽을 수 있습니까?

그렇다면 세관 포트가 설정의 일부인 경우 특별한 구문 요구 사항이 있습니까? 에 연결해야 합니다.sftp://username:[email protected]:12322

답변1

ssh가장 좋은 방법은 3단계 처럼 키 쌍을 사용하여 서버에 액세스하는 것입니다 .

  1. 키 쌍을 만듭니다(아직 없는 경우).

    ssh-keygen -t rsa -C "" -f ~/.ssh/id_rsa
    
  2. 공개 키를 서버에 복사합니다.

    ssh-copy-id [email protected] -p 12322
    
  3. 서버에 연결:

    lftp sftp://[email protected]:12322
    

비표준 경로를 키로 사용하려면 ! ssh-agent또는 그 앞에 키를 추가해야 합니다 .ssh/config.

답변2

~에 따르면lftp매뉴얼 페이지,~/.netrc 지원/사용자 lftp:

~/.netrc

FTP 서버의 기본 로그인 이름과 비밀번호를 얻으려면 이 파일을 참조하십시오. 사용자 이름은 있지만 비밀번호는 없는 URL을 사용하는 경우 여기에서도 비밀번호가 검색됩니다.

이 기사를 읽으면 사용자 정의 포트 URL을 사용해도 괜찮을 것 같습니다.

답변3

나는 확인할 수 있다roneo.org대답은 정확하고스토리 코더포트 지정 방법을 설명하는 설명도 유효합니다.

.netrc자격 증명을 일반 텍스트 파일에 저장하지 않고 트래픽을 암호화하는 보다 안전한 로그인 옵션을 원합니다 .

lftp를 통해 파일을 명시적으로 호출할 수 있다면 파일을 암호화하여 전달할 .netrc수 있습니다 . 불행히도 그렇게 할 수는 없습니다..netrcgpglftpcURL

하지만 할 수 있는 일은 모든 연결 정보(비밀번호 포함)가 포함된 암호화된 FTP URL 문자열을 생성하여 lftp.

전체 로그인 이름, 포트 및 서버 경로와 함께 단일 문자열을 포함하는 일반 텍스트 파일을 만드는 것부터 시작합니다. 기본적으로 lftp북마크 파일( ~/.local/share/lftp/bookmarks)을 별칭 없이 사용하는 경우에는 북마크 파일에 저장된 내용이 저장됩니다.

따라서 bookmarks파일에 다음이 있는 경우:

myftpserver ftp://<user>:<pass>@ftp.mysite.com:10234/path/to/files/

당신은 단지 다음을 사용합니다 :

ftp://<user>:<pass>@ftp.mysite.com:10234/path/to/files/

먼저 빈 텍스트 파일을 만듭니다.

touch ~/.lftprc

텍스트 편집기를 사용하여 파일에서 ftp URL을 추가하여 bookmarksbash 기록에서 비밀번호를 유지하세요.

vi ~/.lftprc

아직 설정한 적이 없다면 gpg지금 설정하세요.

gpg --full-generate-key

그런 다음 다음 명령을 사용하여 파일을 암호화합니다 gpg.

gpg -r <GPG USER ID/EMAIL> -e ~/.lftprc

그러면 파일은 다음과 같이 됩니다 ~/.lftprc.gpg. 생성한 파일을 삭제하십시오.

rm ~/.lftprc

Bash이제 전체 로그인 URL은 기본적으로 다음을 사용하여 호출 할 수 있는 암호화된 문자열입니다 gpg.

lftp $( gpg --batch -q -d ~/.bookmark.gpg )

그런 다음 별칭으로 변환할 수 있습니다.

alias lftps='lftp $( gpg --batch -q -d ~/.bookmark.gpg )'

멋져 보이기 때문에 lftps를 선택했지만 원하는 것은 무엇이든 할 수 있습니다.

HOSTNAME:~ # lftps
cd ok, cwd=/path/to/files                                                                  
lftp <user>@ftp.mysite.com:/path/to/files>

내 FTP 서버는 FTP를 통한 명시적 TLS를 지원하므로 보안 전송을 위해 .lftp.conf다음을 수행합니다.

set ssl-allow true
set ssl:ca-file "/var/lib/ca-certificates/ca-bundle.pem"
set ftp:ssl-force true

그래서 결국 나는 lftp가 어떻게 사용자의 비밀번호를 서버에 전달하는지, 그리고 당신이 그것을 알아낼 수 있는지 알고 싶습니다...

답변4

자격 증명을 에 저장할 수 있습니다 ~/.netrc. 파일은 다음과 같습니다.

machine ftp.cluster.host.net (do not include 'sftp://' here)
login yournickname
password xFrPkIB8767

그러면 연결할 수 있습니다

lftp sftp://[email protected]/

닉네임은 필수이지만 비밀번호는 닉네임에서 추출됩니다 .netrc. 터미널 기록이 깨끗합니다!

당신은 또한 수명령을 직접 전달도착하다 lftp:

lftp -c "open sftp://[email protected]; ls"

스크립트 및 bash 별칭에 매우 유용합니다!

관련 정보