비밀번호를 묻지 않고 한 컴퓨터에서 다른 컴퓨터로 파일을 복사합니다.

비밀번호를 묻지 않고 한 컴퓨터에서 다른 컴퓨터로 파일을 복사합니다.

현재 이 명령을 사용하고 있습니다. 다른 컴퓨터에 있습니다(ip1).

scp file.txt root@ip2:/home/praveen/test.c /home/praveen

이 명령은 비밀번호를 묻는 메시지를 표시합니다.

일부 쉘 스크립트에서 이를 사용하고 있으며 일부 crontab 파일에서 해당 스크립트를 호출하고 있습니다. 그래서 매번 비밀번호를 입력할 수가 없어요. 비밀번호 묻기를 비활성화하는 방법이나 비밀번호를 다시 입력할 필요가 없도록 어딘가에서 비밀번호를 입력하는 다른 방법이 있습니까?

ssh-keygen이 스크립트에서만 작업을 수행해야 하기 때문에 사용할 수 없습니다 . 이 기능을 사용하면 ssh-keygen다시는 비밀번호를 묻는 메시지가 표시되지 않습니다. 나는 이것을 원하지 않습니다. 나머지는 정상적으로 진행되어야 합니다.

답변1

ssh-keygen키 교환을 사용할 수 없는 이유가 명확하지 않습니다 . 나는 이것이 권장되는 관행이라고 생각합니다.

expect또 다른 방법은 명령을 사용하는 것입니다 (온라인 매뉴얼 페이지). 이렇게 하면 상호 작용 중에 사용자 개입이 제거됩니다. 이름에서 알 수 있듯이 프롬프트를 받아 지정된 방식으로 그에 따라 응답합니다.

이 솔루션을 확인해 보세요자동화된 SSH 사용expect. 몇 줄을 인용하자면:

# Look for passwod prompt
expect "*?assword:*"
# Send password aka $password
send -- "$password\r"

두 번째 줄은 표시되는 프롬프트를 지정합니다. 이 경우 비밀번호를 묻습니다. 네 번째 줄은 비밀번호를 서버로 보냅니다.

답변2

원격 서버가 허용하는 경우 ftp를 사용할 수 있습니다. 다음은 이 목적으로 사용하는 쉘 스크립트의 예입니다.

HOST='remote.server.com'
USER='domainname/usrid'   
PASSWD='p@@ssw0rd'
cd /path/to/local/directory/containing/the/file/to/be/transferred
`ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd /diretory/on/remote/server
put file2transfer.dat 
bye    
quit
END_SCRIPT`

답변3

아무도 실제 답변을 게시하지 않았기 때문입니다.

네, 댓글에 명시된 대로입니다. 공개/개인 키 쌍을 생성해야 합니다.

다음은 2개의 매뉴얼입니다:

ssh-agent그런 다음 키에 대해 지정된 암호를 입력할 필요가 없도록 키를 메모리에 로드하는 이점을 누릴 수 있습니다. 키는 현재 세션 동안 메모리에 저장되기 때문입니다. 먼저 비밀번호를 설정할 필요는 없지만, 귀하의 개인 키를 가진 누군가가 이를 사용하여 귀하를 손상시킬 수 있으므로 그렇게 하는 것이 좋습니다.


물론 키를 삭제하거나 ~/.ssh/authorized_keys원격 호스트에서 공개 키를 삭제할 수 있습니다. 그러면 그는 귀하의 비밀번호를 다시 묻는 메시지를 표시합니다.

답변4

간단한 해결책은 다음과 같습니다.

echo "password" | scp -r myfile user@remotehost:/home/user/destination 

관련 정보