---
name: "krb5-rsh"
section: "1"
platform: "linux"
package: "krb5-clients"
version: "1:1.0.1-4"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/krb5-rsh"
---

# krb5-rsh(1)

remote shell

## NAME

rsh - remote shell

## SYNOPSIS

**rsh** *host* \[**-l** *username*\] \[**-n**\] \[**-d**\] \[**-k** *realm*\] \[**-f** \| **-F**\] \[**-x**\] \[**-PN \| -PO**\] *command*

## DESCRIPTION

**Rsh** connects to the specified *host,* 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.  This implementation of **rsh** will accept any port for the standard error stream.  Interrupt, quit and terminate signals are propagated to the remote command; *rsh* normally terminates when the remote command does.

Each user may have a private authorization list in a file .k5login in his login directory.  Each line in this file should contain a Kerberos principal name of the form *principal/instance@realm*. If there is a ~/.k5login file, then access is granted to the account if and only if the originater user is authenticated to one of the princiapls named in the ~/.k5login file.  Otherwise, the originating user will be granted access to the account if and only if the authenticated principal name of the user can be mapped to the local account name using the aname -\> lname mapping rules (see *krb5\_anadd*(8) for more details).

## OPTIONS

- **-l** *username*

  sets the remote username to *username*. Otherwise, the remote username will be the same as the local username.

- **-x**

  causes the network session traffic to be encrypted.  This applies only to the input and output streams, and not the command line.

- **-f**

  cause nonforwardable Kerberos credentials to be forwarded to the remote machine for use by the specified *command*. They will be removed when *command* finishes.  This option is mutually exclusive with the **-F** option.

- **-F**

  cause *forwardable* Kerberos credentials to be forwarded to the remote machine for use by the specified *command*. They will be removed when *command* finishes.  This option is mutually exclusive with the **-f** option.

- **-k** *realm*

  causes  *rsh* to obtain tickets for the remote host in *realm* instead of the remote host's realm as determined by [*krb\_realmofhost*(3)](/krb_realmofhost/3.md).

- **-d**

  turns on socket debugging (via [*setsockopt*(2)](/setsockopt/2.md)) on the TCP sockets used for communication with the remote host.

- **-n**

  redirects input from the special device */dev/null* (see the BUGS section below).

- **-PN**

  - **-PO**

  Explicitly request new or old version of the Kerberos \`\`rcmd'' protocol.  The new protocol avoids many security problems found in the old one, but is not interoperable with older servers.  (An "input/output error" and a closed connection is the most likely result of attempting this combination.)  If neither option is specified, some simple heuristics are used to guess which to try.

If you omit *command*, then instead of executing a single command, you will be logged in on the remote host using [*rlogin*(1)](/rlogin/1.md).

Shell metacharacters which are not quoted are interpreted on the local machine, while quoted metacharacters are interpreted on the remote machine.  Thus the command

   rsh otherhost cat remotefile \>\> localfile

appends the remote file *remotefile* to the local file *localfile*, while

   rsh otherhost cat remotefile "\>\>" otherremotefile

appends *remotefile* to *otherremotefile*.

## FILES

- /etc/hosts

  - \~/.k5login

  (on remote host) - file containing Kerberos principals that are allowed access.

## SEE ALSO

[rlogin(1)](/rlogin/1.md), [kerberos(3)](/kerberos/3.md), [krb\_sendauth(3)](/krb_sendauth/3.md), [krb\_realmofhost(3)](/krb_realmofhost/3.md), [kshd(8)](/kshd/8.md)

## BUGS

If you are using [*csh*(1)](/csh/1.md) and put a [*rsh*(1)](/rsh/1.md) in the background without redirecting its input away from the terminal, it will block even if no reads are posted by the remote command.  If no input is desired you should redirect the input of *rsh* to /dev/null using the **-n** option.

You cannot run an interactive command (like *rogue*(6) or [*vi*(1)](/vi/1.md)); use [*rlogin*(1)](/rlogin/1.md).

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