Are remote pipes fixed in 3.5?

From: Sean Kamath (kamath@geekoids.com)
Date: 01/19/03

  • Next message: Ben Lindstrom: "Re: New howto for OpenSSh on the web."
    To: secureshell@securityfocus.com
    Date: Sat, 18 Jan 2003 15:35:32 -0800
    From: Sean Kamath <kamath@geekoids.com>
    

    Trolling through the mailing list archives, I've found both on the
    developer list as well as this list questions about remote pipes
    causing problems with SSH2 (but not SSH1) connections. The problem
    I'm talking about is this:

    ssh -2 remotehost yes | dd of=/dev/null count=2

    This will hang. the 'yes' program running on remotehost will block,
    and ssh will never return. dd will have exited. Using -1 will work
    fine. Basically, SSH2 will shut down the channel without telling the
    remote side that stdout has closed. Note that you can play all sorts
    of games with -n and -f, but nothing fixes it (if you use -f, the dd
    will exit and it will "appear" to work, but actually all that happens
    is the ssh is running in the background, and the remote 'yes' is still
    running (though blocked)).

    ssh -v -v -v output:

    ...
    debug1: Sending command: yes
    debug1: channel request 0: exec
    debug2: callback done
    debug1: channel 0: open confirm rwindow 0 rmax 16384
    debug2: channel 0: rcvd adjust 32768
    debug1: channel 0: write failed
    debug1: channel 0: close_write
    debug1: channel 0: output open -> closed
    debug1: channel_free: channel 0: client-session, nchannels 1
    debug3: channel_free: status: The following connections are open:
      #0 client-session (t4 r0 i0/0 o3/0 fd 5/-1)
    <I Hit ^C Here>
    debug3: channel_close_fds: channel 0: r 5 w -1 e 7

    Nicholas William's post on the developer list in December of 2001 said
    something about a patch needing to be applied to nchan.c in
    chan_failed_write2(). So, is this fixed in 3.5? I think the
    developers agree that shutting down the connection is the right thing
    to do (it's what rsh does), so I just need to know if it's in 3.5 to
    make it worth upgrading from Solaris 9's ssh.

    What I'm trying to do is the ubiquitous backup-over-ssh, and end of
    tape detection is driving me nuts. Something as simple as:

    ssh host ufsdump / | dd od=/dev/rmt/0

    WILL NEVER END when the tape runs out. Sigh.

    Sean

    PS If this is not fixed, I'll post to the developer list. . .



    Relevant Pages

    • Are remote pipes fixed in 3.5?
      ... > and ssh will never return. ... SSH2 will shut down the channel without telling the ... > remote side that stdout has closed. ... > debug1: channel request 0: exec ...
      (SSH)
    • Re: OpenSSH to SSH2 scp.
      ... When checking the path on the remote host are you checking it under the user ... > I try to scp a file onto the remote server, I get an error message ... > debug1: channel 0: rcvd close ...
      (comp.security.ssh)
    • Re: SCP failing
      ... It seems that I don't have permission to run sshd on the remote ... rest of the debug output after the "Sending command:" line. ... debug1: channel request 0: exec ...
      (comp.security.ssh)
    • Re: Are remote pipes fixed in 3.5?
      ... > and ssh will never return. ... SSH2 will shut down the channel without telling the ... > remote side that stdout has closed. ... > debug1: channel request 0: exec ...
      (SSH)
    • Connection setup for SSH2 much slower than for SSH1 on Solaris8
      ... I'm seeing very slow connection setup using SSH2 vs SSH1. ... debug1: Rhosts Authentication disabled, originating port will not be trusted. ... debug1: channel 0: new ...
      (comp.security.ssh)