侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux rsh命令用法详解:如何连接到远程主机并在那里执行命令

Linux rsh命令介绍

rsh是remote shell的缩写,意思是远程Shell。它是一个用于连接到远程主机并在那里执行命令的程序,它可以实现两个系统之间的远程Shell会话。rsh将其标准输入复制到远程命令,远程命令的标准输出复制到其标准输出,远程命令的标准错误复制到其标准错误。中断、退出和终止信号会传递给远程命令;rsh通常在远程命令结束时终止。rsh与ssh功能类似,但是在安全性方面不如ssh。

适用的Linux版本

rsh命令在大多数Linux发行版中都是可用的,但是不同版本的rsh可能有一些细微的差异,比如支持的选项或者错误处理方式。如果你的系统中没有安装rsh命令,你可以通过安装rsh-server或者krb5-workstation等包来获取它,因为它通常是作为这些包的依赖项安装的。下面是一些常见Linux发行版中安装rsh命令的方法:

  • CentOS 7/8
[linux@bashcommandnotfound.cn ~]$ sudo yum install rsh-server
  • Ubuntu/Debian
[linux@bashcommandnotfound.cn ~]$ sudo apt install rsh-server
  • Arch Linux
[linux@bashcommandnotfound.cn ~]$ sudo pacman -S krb5-workstation

Linux rsh命令的基本用法

rsh命令的语法格式如下:

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

其中,host是要连接的远程主机名称或IP地址,username是要登录的远程用户名(默认与本地用户名相同),command是要在远程主机上执行的命令(如果省略,则使用rlogin登录)。其他选项的含义如下:

  • -x:加密网络会话流量。
  • -f:将不可转发的Kerberos凭证转发到远程主机。
  • -F:将可转发的Kerberos凭证转发到远程主机。
  • -k:指定获取远程主机票据的领域(realm)。
  • -d:开启TCP套接字调试。
  • -n:将输入重定向到/dev/null。
  • -PN, -PO:显式请求新或旧版本的Kerberos "rcmd"协议。

Shell元字符(metacharacters)如果没有引号,会在本地机器上解释,如果有引号,会在远程机器上解释。例如,下面的命令:

rsh otherhost cat remotefile >> localfile

会将远程文件remotefile附加到本地文件localfile,而:

rsh otherhost cat remotefile \">>\" otherremotefile

会将remotefile附加到otherremotefile¹。

Linux rsh命令的常用选项说明

rsh命令支持以下几种常用选项:

选项含义
-l username指定要登录的远程用户名
-x加密网络会话流量
-f将不可转发的Kerberos凭证转发到远程主机
-F将可转发的Kerberos凭证转发到远程主机
-k realm指定获取远程主机票据的领域
-d开启TCP套接字调试
-n将输入重定向到/dev/null
-PN, -PO显式请求新或旧版本的Kerberos "rcmd"协议

Linux rsh命令的实例

下面是一些使用rsh命令的实例,展示了不同的选项和命令的效果。

  • 使用rsh命令在远程主机上执行ls命令
[linux@bashcommandnotfound.cn ~]$ rsh user@192.168.1.100 ls
Desktop Documents Downloads Music Pictures Public Templates Videos
  • 使用rsh命令在远程主机上执行ps命令,并将输出附加到本地文件
[linux@bashcommandnotfound.cn ~]$ rsh user@192.168.1.100 ps >> ps.log
  • 使用rsh命令登录远程主机
[linux@bashcommandnotfound.cn ~]$ rsh user@192.168.1.100
Last login: Mon Oct 25 10:23:12 2023 from 192.168.1.101
[user@remotehost ~]$
  • 使用rsh命令在远程主机上执行top命令,并加密网络流量
[linux@bashcommandnotfound.cn ~]$ rsh -x user@192.168.1.100 top

Linux rsh命令的注意事项

  • rsh命令在安全性方面不如ssh,因为它不支持公钥认证,也不支持数据压缩³。如果你对网络安全有较高的要求,建议你使用ssh代替rsh。
  • rsh命令需要在远程主机上配置允许访问的用户列表,这可以通过在远程主机上创建一个~/.rhosts文件来实现。该文件中每行包含一个允许访问的本地主机名称和用户名,用空格分隔。例如,如果你想允许本地主机192.168.1.101上的user用户访问远程主机,你可以在远程主机上创建一个~/.rhosts文件,内容如下¹:
192.168.1.101 user
  • rsh命令在处理错误时,会将错误信息输出到标准错误,并返回非零的退出码¹。例如,如果你尝试连接到一个不存在或者不可达的主机,你会得到类似下面的输出:
[linux@bashcommandnotfound.cn ~]$ rsh user@192.168.1.xxx ls
connect to address xxx.xxx.xxx.xxx: Connection refused
Trying krb4 rsh...
connect to address xxx.xxx.xxx.xxx: Connection refused
trying normal rsh (/usr/bin/rsh)
connect to address xxx.xxx.xxx.xxx: Connection refused
rsh: can't establish connection
0

评论区