1 Reply Latest reply: Feb 1, 2012 11:50 PM by 520278 RSS

    rsh <remote_host> works but rsh <remorte_host> <remote_command> hangs

    520278
      Hi.

      I am trying to run a command on a <remote_host> from a <local_host> using rsh.

      The <local_host> from which I am running rsh is Solaris 10 (SunOS ssapp0950 5.10 Generic_142900-10 sun4v sparc SUNW,SPARC-Enterprise-T5220 Solaris).

      The <remote_host> on which I want to run the command is Linux (some vendor customised version and that is all I can say).

      I have to use rsh and not ssh as ssh is not installed (and cannot be installed) on the <remote_host>.

      rsh <remote_host> from the <local_host> to the <remote_host> works fine and I can successfully rlogin in to <remote_host>.

      But rsh <remote_host> <remote_command> hangs.

      I know that rsh <remote_host> is actually rlogin <remote_host> using port 513 and rsh <remote_host> <remote_command> is rsh using port 514.

      There is a firewall between the <local_host> and the <remote_host> but it has been opened for both port 513 and 514.

      telnet from the <local_host> to the <remote_host> to ports 513 and 514 passes through the firewall OK.

      And snoop seems to indicate that the firewall is passing traffic OK between the <local_host> and the <remote_host> for rsh <remote_host> <remote_command>.

      In a previous environment with the <local_host> Solaris 8 and no firewall but the <remote_host> the same both rsh <remote_host> and rsh <remote_host> <remote_command> work.

      It is confusing because I thought at first it was a firewall problem but telnet and snoop seem to indicate it is not.

      I am using the same user (same group) on both the <local_host> and the <remote_host> and I think the name resolution of the <local_host> by the <remote_host> is correct i.e. the <local_host> IP address being used by the <remote_host> to reply to the <local_host> is correct.

      The <local_host> has several network interfaces with different corresponding IP addresses and I have tried using each of them, configuring the corresponding IP addresses of the <local_host> on the <remote_host>, without success.

      The <local_host> and <remote_host> network services seem to be running OK:

      svc:/network/login:rlogin and svc:/network/shell:default on the <local_host> and

      in.rlogind and in.rshd on the <remote_host>.

      I have trawled through the forums without success.

      There are no error messages at all - nothing about unknown hosts or bad permissions - it just hangs.

      Here is some sample snoop output for "rsh flsc pwd" on the Solaris 10 <local_host> (ssapp0950). flsc-sysa is the <remote_host>:

      $ rsh flsc pwd

      $ snoop -d vnet456001 flsc
      ssapp0950 -> flsc-sysa RSHELL C port=939
      flsc-sysa -> ssapp0950 RSHELL R port=939
      ssapp0950 -> flsc-sysa RSHELL C port=939
      ssapp0950 -> flsc-sysa RSHELL C port=939 938\0

      Here is some sample telnet output for "telnet flsc 513" and "telnet flsc 514" on the Solaris 10 <local_host>:

      bash-4.0$ telnet flsc 513
      Trying 147.69.10.204...
      Connected to flsc-sysa.
      Escape character is '^]'.


      bash-4.0$ telnet flsc 514
      Trying 147.69.10.204...
      Connected to flsc-sysa.
      Escape character is '^]'.

      Could it be caused by some mismatch in the <local_host> and <remote_host> Unix Shell environments ?

      Any suggestions greatly appreciated.

      Thanks,
      Brett.
        • 1. know where it hangs
          520278
          I have determined that the hang happens after the following packets are exchanged:


          ssapp0950 -> flsc RSHELL C port=536

          flsc -> ssapp0950 RSHELL R port=536

          ssapp0950 -> flsc RSHELL C port=536

          ssapp0950 -> flsc RSHELL C port=536 *535*\0 *← HANGS AFTER THIS PACKET IS SENT*


          which has the corresponding system calls on the ssapp0950 server:


          $ 2>&1 truss rsh flsc pwd
          ..........

          getsockopt(7, tcp, TCP_ANONPRIVBIND, 0xFFBF29E0, 4, SOV_DEFAULT) = 0

          setsockopt(7, tcp, TCP_EXCLBIND, 0xFFBF29E0, 4, SOV_DEFAULT) = 0

          listen(7, 1, SOV_DEFAULT) = 0

          write(6, " *5 3 5*\0", 4) = 4

          pollsys(0xFFBF0B38, 2, 0x00000000, 0x00000000) (sleeping...) *← HANGS AT THIS SYSTEM CALL*


          What is this Port (Port *535*) used for ?

          Thanks,
          Brett.