Go to main content

man pages section 1: User Commands

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

remote_shell(1)

Name

rsh, remsh, remote_shell - remote shell

Synopsis

rsh [-n] [-l username] hostname command
rsh hostname [-n] [-l username] command
remsh [-n] [-l username] hostname command
remsh hostname [-n] [-l username] command
hostname [-n] [-l username] command

Description


Caution

Caution  -  All data exchanges over this protocol are performed without encryption, and have no protection against spoofing or snooping of traffic. The in.rshd server is disabled by default on Oracle Solaris and most other modern operating systems, and both the in.rshd server and the rsh command may be removed in future versions of Oracle Solaris. Use of the ssh(1) utility is strongly recommended instead.


The rsh utility connects to the specified hostname and executes the specified command. rsh copies its standard input to the remote command, the standard output of the remote command to its standard output, and the standard error of the remote command to its standard error. Interrupt, quit, and terminate signals are propagated to the remote command. rsh normally terminates when the remote command does.

If you omit command, instead of executing a single command, rsh logs you in on the remote host using rlogin(1).

rsh does not return the exit status code of command.

Shell metacharacters which are not quoted are interpreted on the local machine, while quoted metacharacters are interpreted on the remote machine. See EXAMPLES.

If there is no locale setting in the initialization file of the login shell (.profile, .cshrc, etc.) for a particular user, rsh always executes the command in the “C” locale instead of using the default locale of the remote machine.

Options

The following options are supported:

–l username

Uses username as the remote username instead of your local username. In the absence of this option, the remote username is the same as your local username.

–n

Redirect the input of rsh to /dev/null. You sometimes need this option to avoid unfortunate interactions between rsh and the shell which invokes it. For example, if you are running rsh and invoke a rsh in the background without redirecting its input away from the terminal, it blocks even if no reads are posted by the remote command. The –n option prevents this.

The type of remote shell (sh, csh, or other) is determined by the user's entry in the passwd(5) database on the remote system.

Operands

The following operand is supported:

command

The command to be executed on the specified hostname.

Usage

The rsh and remsh commands are IPv6–enabled. See ip6(4P).

Hostnames are provided by the hosts(5) name service. Each host has one official name (the first name in the database entry), and optionally one or more nicknames. Either official hostnames or nicknames can be specified in hostname.

If the name of the file from which rsh is executed is anything other than rsh, rsh takes this name as its hostname argument. This allows you to create a symbolic link to rsh in the name of a host which, when executed, invokes a remote shell on that host. By creating a directory and populating it with symbolic links in the names of commonly used hosts, then including the directory in your shell's search path, you can run rsh by typing hostname to your shell.

If rsh is invoked with the basename remsh, rsh checks for the existence of the file /usr/bin/remsh. If this file exists, rsh behaves as if remsh is an alias for rsh. If /usr/bin/remsh does not exist, rsh behaves as if remsh is a host name.

For the non-secure rsh session, each remote machine can have a file named /etc/hosts.equiv containing a list of trusted hostnames with which it shares usernames. Users with the same username on both the local and remote machine can run rsh from the machines listed in the remote machine's /etc/hosts.equiv file. Individual users can set up a similar private equivalence list with the file .rhosts in their home directories. Each line in this file contains two names: a hostname and a username separated by a space. The entry permits the user named username who is logged into hostname to use rsh to access the remote machine as the remote user. If the name of the local host is not found in the /etc/hosts.equiv file on the remote machine, and the local username and hostname are not found in the remote user's .rhosts file, then the access is denied. The hostnames listed in the /etc/hosts.equiv and .rhosts files must be the official hostnames listed in the hosts database; nicknames can not be used in either of these files.

You cannot log in using rsh as a trusted user from a trusted hostname if the trusted user account is locked.

rsh does not prompt for a password if access is denied on the remote machine unless the command argument is omitted.

Examples

Example 1 Using rsh to Append Files

The following command appends the remote file lizard.file from the machine called lizard to the file called example.file on the machine called example:

example% rsh lizard cat lizard.file >> example.file

The following command appends the file lizard.file on the machine called lizard to the file lizard.file2 which also resides on the machine called lizard:

example% rsh lizard cat lizard.file ">>" lizard.file2

Exit Status

The following exit values are returned:

0

Successful completion.

1

An error occurred.

Files

/etc/hosts.equiv

Trusted remote hosts and users

Attributes

See attributes(7) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Availability
network/legacy-remote-utilities
CSI
Enabled
Interface Stability
Obsolete

See Also

rlogin(1), ssh(1), telnet(1), ip6(4P), hosts(5), hosts.equiv(5), attributes(7), in.rshd(8)

Notes

When a system is listed in hosts.equiv, its security must be as good as local security. One insecure system listed in hosts.equiv can compromise the security of the entire system.

You cannot run an interactive command, such as vi(1). Use ssh to start a remote login session if you wish to do this.

Stop signals stop the local rsh process only. This is arguably wrong, but currently hard to fix for reasons too complicated to explain here.

The current local environment is not passed to the remote shell.

Sometimes the –n option is needed for reasons that are less than obvious. For example, the command:

example% rsh somehost dd if=/dev/nrmt0 bs=20b | tar xvpBf −

puts your shell into a strange state. Evidently, the tar process terminates before the rsh process. The rsh command then tries to write into the “broken pipe” and, instead of terminating neatly, proceeds to compete with your shell for its standard input. Invoking rsh with the –n option avoids such incidents.

This bug occurs only when rsh is at the beginning of a pipeline and is not reading standard input. Do not use the –n option if rsh actually needs to read standard input. For example:

example% tar cf − . | rsh sundial dd of=/dev/rmt0 obs=20b

does not produce the bug. If you were to use the –n option in a case like this, rsh would incorrectly read from /dev/null instead of from the pipe.

History

Support for Kerberos, including the options –a, –f, –F, –k, –K, –PN, –PO, and –x, was added in Solaris 10 3/05 and removed in Oracle Solaris 11.4.0. Prior to Solaris 10, a kerberized version was available in the Sun Enterprise Authentication Mechanism (SEAM) add-on package for Solaris.

Support for IPv6 was added in Solaris 8.

The rsh command, including support for the options –l and –n, has been present since the initial release of Solaris.