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
评论区