Linux에서 sshpass 및 scp를 사용하여 진행 상황을 보는 방법은 무엇입니까?

Linux에서 sshpass 및 scp를 사용하여 진행 상황을 보는 방법은 무엇입니까?

내 Linux 터미널에서는 다음 명령을 사용합니다.

sshpass -p "pass" scp -r [email protected]:/cmshome/me/file /home/me/Desktop

비밀번호가 포함된 파일을 다운로드하세요. sshpass가 없으면 다운로드 진행 상황을 볼 수 있지만, sshpass를 사용하면 비어 있고 완료될 때까지 볼 수 없습니다.

sshpass로 볼 수 있는 방법이 있나요?

답변1

나는 당신이 요구하는 것이 구현하기 쉽지 않거나 기본 Bash 스크립트를 사용하여 가능하다고 생각하지 않습니다.

따라서 다음은 실제로 귀하의 질문에 대한 답변이 아니라 문제를 해결하는 또 다른 방법을 제공합니다.

공개 키 인증(비밀번호 필요 없음)과 함께 일반 명령을 사용하는 대신 sshpass. scp잘 모르시면 [1]을 참조하세요.

scp를 사용하려는 경우로컬 사용을 위한 스크립트, 이것이 제가 생각하는 방식입니다:

  • 비밀번호 없이 공개키 생성
  • ssh-copy-id공개 키를 서버에 추가하는 데 사용됩니다 .

프롬프트 없이 명령을 실행할 수 있으면 충분합니다.

scp -r [email protected]:/cmshome/me/file /home/me/Desktop

~을 위한배포하려는 스크립트, 명시적인 비밀번호를 사용하는 sshpass는 확실히 좋은 생각이 아닙니다. 적어도 sshpass의 "-e" 플래그를 사용하고 더 나은 보안을 위해 사용자가 비밀번호를 환경 변수로 제공하도록 해야 합니다.

이 경우 공개 키 방법은 덜 편리하지만 여전히 가능합니다. 스크립트 사용자에게 공개 키 생성을 요청할 수 없는 경우 공개 키를 동적으로 생성하여 서버에 복사하고 scp프롬프트 없이 실행할 수 있습니다.

 #!/bin/bash
 KEY="$HOME/.ssh/id_rsa_example"
 if [ ! -e "$KEY" ]; then
     ssh-keygen -t rsa -N "" -f "$KEY"
     sshpass -e ssh-copy-id -i "${KEY}.pub" [email protected]
 fi
 scp -r [email protected]:/cmshome/me/file /home/me/Desktop

rsync마지막으로 진행률 표시줄을 만드는 것이 가능합니다 .

$ rsync -P --rsh="sshpass -p $PASSWORD ssh -l me8" host.ca:/cmshome/me/file /home/me/Desktop

[1]https://help.ubuntu.com/community/SSH/OpenSSH/Keys

관련 정보