Hide Forgot
Description of problem: When using ssh -tt as the remote shell for rsync, the transfer fails with error: rsync error: error in rsync protocol data stream (code 12) at io.c(1134) [sender=3.0.6] Version-Release number of selected component (if applicable): rsync How reproducible: Easily reproducible. Steps to Reproduce: 1. echo test >> test 2. rsync --rsh="ssh -tt" test root@rhel:/root/test Actual results: tcgetattr: Invalid argument unexpected tag 87 [sender] rsync error: error in rsync protocol data stream (code 12) at io.c(1134) [sender=3.0.6] Also, the file does not transfer. Expected results: No error, and the file should transfer. Additional info: Same error message as BZ# 959824. Different reproduction steps though.
I don't think tools like rsync are generally ready to transfer data over a pseudo terminal and I wouldn't expect it to work. The transfers rsync is doing are of binary nature and any layer that works with special characters naturally breaks that. I am curious about the reason for using double '-t' as the meaning of that is to force TTY allocation even when it clearly doesn't make sense (e.g. the local side is a daemon that wants to transfer data, and not a terminal session). Is there any reason to use '-tt' except to deliberately break any binary protocol over the SSH transport (e.g. for testing purposes)?