Bug 1019923 - Using rsync with rsh="ssh -tt" fails with code 12
Using rsync with rsh="ssh -tt" fails with code 12
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: rsync (Show other bugs)
All Unspecified
medium Severity medium
: rc
: ---
Assigned To: Pavel Šimerda (pavlix)
BaseOS QE Security Team
Depends On:
  Show dependency treegraph
Reported: 2013-10-16 11:54 EDT by John Trowbridge
Modified: 2014-06-09 09:44 EDT (History)
1 user (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2014-03-10 11:31:29 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
jtrowbri: needinfo-
jtrowbri: needinfo-

Attachments (Terms of Use)

  None (edit)
Description John Trowbridge 2013-10-16 11:54:05 EDT
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):

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.
Comment 1 Pavel Šimerda (pavlix) 2013-10-17 01:35:51 EDT
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)?

Note You need to log in before you can comment on or make changes to this bug.