ssh가 /dev/tty를 열 수 없으면 rsync가 실패합니다.

ssh가 /dev/tty를 열 수 없으면 rsync가 실패합니다.

일부 파일을 원격 컴퓨터에 동기화해야 하는 스크립트가 있습니다. rsync 명령은 다음과 같습니다:

rsync -avz -e 'ssh -vv -o IdentitiesOnly=yes -i /data/credentials/rsync2.key' \
   --rsync-path="mkdir -p ~/new_data/12345/ && rsync" \
   /data/new_data/  some_user@$REMOTE_HOST_IP:~/new_data/12345/

스크립트의 출력은 다음과 같습니다.

...
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) 전송됨
debug1: SSH2_MSG_KEX_DH_GEX_GROUP이 필요합니다.
debug2: dh_gen_key: 개인정보 키 비트 세트: 134/256
디버그 2: 비트 설정: 505/1024
debug1: 서버 호스트 키: RSA XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
debug1: read_passphrase: 열 수 없습니다. /dev/tty: 해당 장치나 주소가 없습니다.
호스트 키 확인에 실패했습니다.
rsync: 연결이 예기치 않게 종료되었습니다(지금까지 0바이트 수신됨) [발신자]
rsync 오류: io.c(605) [sender=3.0.9](코드 255)에서 설명할 수 없는 오류가 발생했습니다.

SSH가 키에 비밀번호를 사용하려고 하는 것 같습니다. 아니요, 키에는 비밀번호가 필요하지 않습니다. 또한 /dev/tty내 스크립트가 메시지의 존재를 확인했기 때문에 문제의 메시지가 완전히 정확하지는 않다고 확신합니다 /dev/tty( ls -l위에 표시됨 crw-rw-rw- 1 root root 5, 0 Feb 23 19:37 /dev/tty:). 또한 키를 사용하여 SSH를 통해 원격 호스트에 수동으로 연결할 수 있기 때문에 키 파일이 유효하다는 것도 알고 있습니다.

여기서 한 가지 문제는 내 스크립트가 Docker 컨테이너에서 실행되고 있으며 이것이 rsync 및 ssh에 어떤 영향을 미치는지 잘 모르겠습니다.

관련 정보