手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

remote_shell(1)

名称

rsh , remsh , remote_shell - 远程 shell

用法概要

rsh [-n] [-a] [-K] [-PN | -PO] [-x] [-f | -F] [-l username] 
     [-k realm] hostname command
rsh hostname [-n] [-a] [-K] [-PN | -PO] [-x] [-f | -F] 
     [-l username] [-k realm] command
remsh [-n] [-a] [-K] [-PN | -PO] [-x] [-f | -F] [-l username] 
     [-k realm] hostname command
remsh hostname [-n] [-a] [-K] [-PN | -PO] [-x] [-f | -F] 
     [-l username] [-k realm] command
 hostname [-n] [-a] [-PN | -PO] [-x] [-f | -F] 
     [-l username] [-k realm] command

描述

rsh 实用程序会连接到指定的 hostname,并执行指定的 commandrsh 会将其标准输入复制到远程命令,将远程命令的标准输出复制到其标准输出,并将远程命令的标准错误复制到其标准错误。中断、退出和终止信号将传播到远程命令。rsh 通常在远程命令终止时终止。

用户可选择采用 Kerberos V5 进行验证的安全 rsh 会话。此外也可以对网络会话通信进行加密。rsh 会话可使用以下 Kerberos 特定选项来执行 Kerberos 验证:–a–PN–PO–x–f–F 以及 –k realm。上述部分选项(–a–x–PN–PO 以及 –f–F)也可以在 krb5.conf(4) [appdefaults] 部分中指定。这些选项的用法及其预期行为将在下面的“选项”部分中讨论。使用 Kerberos 验证时,帐户授权将由 krb5_auth_rules(5) 中的规则控制。如果此授权失败,则仅当在命令行上显式使用 –PO 选项或者在 krb5.conf(4) 中指定了该选项时,才会回退到使用 rhosts 的常规 rsh 会话。此外,–PN–PO–x–f–F 以及 –k realm 选项只是 –a 选项的超集。

如果省略了 command,而非执行单一命令,那么 rsh 将使用 rlogin(1) 登录远程主机。

rsh 不会返回 command 的退出状态代码。

不带引号的 Shell 元字符将在本地计算机上解释,而带引号的元字符将在远程计算机上解释。请参见“示例”部分。

如果特定用户的登录 shell 的初始化文件(.cshrc 等)中并无语言环境设置,rsh 将始终在 “C” 语言环境(而非远程计算机的缺省语言环境)中执行命令。

命令会以未加密的形式发送至远程系统。所有后续的网络会话通信都会被加密。请参见 –x

选项

支持以下选项:

–a

显式启用 Kerberos 验证,并信任用于访问控制的 .k5login 文件。如果服务器端的 in.rshd(1M) 成功执行了授权检查,且 .k5login 文件允许访问,则允许用户执行命令。

–f

将本地凭据(Kerberos 票证授予票证)的副本转发给远程系统。这是一个不可转发的票证授予票证。如果需要通过远程主机上其他使用 Kerberos 验证的网络服务的验证,则转发一个票证授予票证。例如,您在远程主机上的起始目录是通过 Kerberos V5 挂载的 NFS。在这种情况下,如果不转发本地凭据,您将无法访问起始目录。此选项与 –F 选项互斥。

–F

将本地凭据(Kerberos 票证授予票证)的可转发副本转发给远程系统。–F 选项提供的功能是 –f 选项所提供功能的超集。例如,使用 –f 选项时,如果在连接到远程主机之后试图通过远程命令调用带 –f–F 选项的 /usr/bin/ftp/usr/bin/telnet/usr/bin/rlogin/usr/bin/rsh,这些操作会失败。因此,您无法将单网络登录信任用到一个系统以外。此选项与 –f 选项互斥。

–k realm

促使 rsh 获取 realm(而非 krb5.conf(4) 确定的远程主机领域)中的远程主机的票证。

–K

此选项会显式禁用 Kerberos 验证。它可用来覆盖 krb5.conf(4) 中的 autologin 变量。

–l username

使用 username(而非本地用户名)作为远程用户名。如果未使用此选项,远程用户名将与本地用户名相同。

–n

rsh 的输入重定向到 /dev/null。有时需要使用此选项来避免 rsh 与调用它的 shell 之间的不良交互。例如,如果在运行 rsh 时在后台调用了另一个 rsh,而未将其输入重定向到终端以外,则将发生阻塞,即使远程命令并未执行读取操作。–n 选项可防止这一问题。

–PO
–PN

显式请求新版 (–PN) 或旧版 (–PO) 的 Kerberos “rcmd” 协议。新协议避免了旧协议中常见的许多安全问题,安全性大幅提升,但它无法与早期的 (MIT/SEAM) 服务器互操作。缺省情况下会使用新协议,除非使用这些选项或通过 krb5.conf(4) 进行了显式指定。使用旧 “rcmd” 协议时,如果 Kerberos 验证失败,系统会回退到常规的非 Kerberos rsh。使用更安全的新 “rcmd” 协议时,则不会发生这种情况。

–x

使系统加密网络会话通信。请参见“描述”部分。

远程 shell 的类型(shrsh 或其他)将由远程系统上 /etc/passwd 文件中的用户条目决定。

操作数

支持下列操作数:

command

要在指定的 hostname 上执行的命令。

用法

有关 rshremsh 遇到大于或等于 2 GB(231 字节)文件时行为的说明,请参见 largefile(5)

rshremsh 命令支持 IPv6。请参见 ip6(7P)。Kerberos V5 验证目前不支持 IPv6

主机名将在 hosts 数据库(包含在 /etc/hosts 文件和/或 Internet 域名数据库中)中提供。每台主机都有一个正式名称(数据库条目中的第一个名称),也可以有一个或多个别名。正式主机名或别名可通过 hostname 给定。

如果执行 rsh 的初始文件名不是 rsh,则 rsh 将使用此名称作为其 hostname 参数。这可让您创建一个指向 rsh 的符号链接,当执行该链接时,将对该主机调用远程 shell。通过创建一个目录并使用常用主机名的符号链接进行填充,然后在 shell 搜索路径中包含该目录,可以运行 rsh(向 shell 中键入 hostname)。

如果使用基名 remsh 来调用 rsh,那么 rsh 将检查是否存在文件 /usr/bin/remsh。如果该文件存在,则 rsh 将像 remshrsh 的别名一样进行操作。如果 /usr/bin/remsh 不存在,那么 rsh 的操作行为就像 remsh 是主机名一样。

对于 Kerberos rsh 会话,每个用户都可在其起始目录中的 .k5login 文件中拥有一个专用验证列表。此文件中的每一行均应包含一个 principal/instance @realm 格式的 Kerberos 主体名称。如果存在一个 ~/.k5login 文件,则当且仅当发起方用户通过了 ~/.k5login 文件中所指定的某个主体的验证时,才会授予其对该帐户的访问权限。否则,当且仅当用户的已验证主体名称可以使用 authenticated-principal-namelocal-user-name 映射规则映射至本地帐户名称时,才会授予发起方用户对该帐户的访问权限。.k5login 文件(用于访问控制)在 Kerberos 验证完成后才生效。

对于非安全 rsh 会话,每个远程计算机可拥有名为 /etc/hosts.equiv 的文件,其中包含一个与其共享用户名的可信主机的名称列表。在本地计算机和远程计算机上拥有相同用户名的用户可从远程计算机的 /etc/hosts.equiv 文件中所列的计算机执行 rsh 操作。各个用户可在其起始目录中使用 .rhosts 文件建立一个效果类似的专用列表。此文件中的每一行都包含两个名称:主机名和用户名(用空格隔开)。该条目允许登录到该主机且具有该用户名的用户以远程用户身份使用 rsh 访问远程计算机。如果远程计算机上的 /etc/hosts.equiv 文件中不含该本地主机的名称,且远程用户的 .rhosts 文件中也不含该本地用户名和主机名,访问会被拒绝。/etc/hosts.equiv.rhosts 文件中所列的主机名必须为列在 hosts 数据库中的正式主机名;在这些文件中不能使用别名。

如果可信用户的帐户被锁定,则无法使用 rsh 以该可信用户的身份从可信主机登录。

如果远程计算机拒绝访问,rsh 不会提示输入口令,除非省略了 command 参数。

示例

示例 1 使用 rsh 附加文件

以下命令会将远程文件 lizard.file 从计算机 lizard 附加到计算机 example 上的文件 example.file

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

以下命令会将计算机 lizard 上的文件 lizard.file 附加到文件 lizard.file2(也驻留在计算机 lizard 上)中:

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

退出状态

将返回以下退出值:

0

成功完成。

1

出现错误。

文件

/etc/hosts

Internet 主机表

/etc/hosts.equiv

可信的远程主机和用户

/etc/passwd

系统口令文件

$HOME/.k5login

包含允许访问的 Kerberos 主体的文件

/etc/krb5/krb5.conf

Kerberos 配置文件

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
service/network/network-clients
CSI
Enabled(已启用)

另请参见

on(1)rlogin(1)ssh(1)telnet(1)vi(1)in.rshd(1M)hosts(4)hosts.equiv(4)krb5.conf(4)attributes(5)krb5_auth_rules(5)largefile(5)ip6(7P)

附注

将系统列在 hosts.equiv 中时,它必须具有与本地安全相当的安全性。将不安全的系统列在 hosts.equiv 中可能会危及整个系统的安全性。

您无法运行交互式命令(如 vi(1))。如果您希望进行此操作,请使用 rlogin

停止信号仅停止本地 rsh 进程。这无疑是错误的,但是目前很难修复,其原因过于复杂,以致于无法在此处加以解释。

不会将当前本地环境传递到远程 shell。

有时出于某些原因需要使用 –n 选项。例如,命令:

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

将 shell 置于异常状态。很明显,tar 进程将在 rsh 进程之前终止。接着,rsh 命令试图写入“已损坏的管道”,而且与 shell 争用标准输入,而不是简单地终止。调用 rsh 时使用 –n 选项可避免此类事件。

此错误仅在 rsh 位于管道开头且未读取标准输入时出现。如果 rsh 实际上需要读取标准输入,请勿使用 –n 选项。例如:

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

不会产生该错误。如果您要在此类情形中使用 –n 选项,则 rsh 将错误地从 /dev/null(而非管道中)进行读取。

对于大多数目的,应首选 ssh(1) 而非 rsh