通过输入本地账户名登录远程计算机系统,完成身份验证以访问其资源或执行操作。
重要安全警告:rlogin
(Remote Login) 是一个过时且极不安全的远程登录协议和命令,它使用明文传输用户名、密码和所有会话数据,极易被网络窃听者截获。在现代网络环境中,强烈反对使用 rlogin
。 安全、加密的替代方案(如 ssh
)已成为绝对标准,本文档旨在解释其历史工作方式,仅供知识参考或在绝对可控、隔离且无安全风险的实验环境中使用。
rlogin
命令登录步骤:
-
前提条件:
- 目标主机配置: 远程服务器 (
remote.server.com
) 必须运行rlogind
服务(守护进程),并且该服务需要在运行状态(通常通过inetd
或xinetd
管理),现代Linux发行版默认不安装或禁用此服务。 - 本地主机配置 (
/etc/hosts.equiv
或~/.rhosts
):- 信任主机 (
/etc/hosts.equiv
): 在远程服务器上,此文件列出被信任的主机名(或主机名+用户名),如果本地主机 (your.local.machine
) 在此列表中,则远程服务器允许来自该主机上同名用户的rlogin
无密码登录。 - 信任主机+用户 (
~/.rhosts
): 在远程服务器上目标用户 (remoteuser
) 的家目录中,此文件格式为hostname username
,如果包含一行your.local.machine localuser
,则允许来自主机your.local.machine
的用户localuser
无需密码即可登录到远程服务器的remoteuser
账户。 - 重要:
.rhosts
文件权限必须设置为600
(-rw-------
),否则rlogin
会因安全风险拒绝使用它,使用chmod 600 ~/.rhosts
设置。
- 信任主机 (
- 网络连通性: 本地主机需要能通过网络访问远程服务器的
rlogin
端口(默认 TCP 513),确保防火墙允许此连接。
- 目标主机配置: 远程服务器 (
-
基本登录语法:
rlogin [选项] 远程主机名 [ -l 远程用户名 ]
远程主机名
(必需): 要登录的服务器的完整主机名 (server.example.com
) 或 IP 地址 (168.1.100
)。-l 远程用户名
(可选): 指定要在远程服务器上登录的用户名,如果省略此选项,rlogin
默认尝试使用本地当前用户的用户名登录远程服务器。- 常用选项 (了解即可,实践中极少使用):
-8
: 允许8位数据传输(用于支持扩展字符集)。-E
: 阻止任何字符被识别为转义字符。-ec
: 设置转义字符为c
(默认为 )。-e^
将转义符设为^
。
-
登录过程示例:
-
场景 1:使用本地用户名登录 (依赖信任配置)
假设本地用户是localuser
,远程主机是remote.server.com
,且远程服务器信任本地主机 (/etc/hosts.equiv
包含your.local.machine
) 或远程用户localuser
的~/.rhosts
包含your.local.machine localuser
。$ rlogin remote.server.com
如果信任配置正确,将直接登录到远程服务器的
localuser
账户,无需输入密码。 -
场景 2:指定不同的远程用户名 (依赖信任配置)
假设本地用户是localuser
,但想登录到远程主机remote.server.com
上的用户remoteuser
,远程用户remoteuser
的~/.rhosts
文件必须包含your.local.machine localuser
。$ rlogin remote.server.com -l remoteuser
如果信任配置正确,将直接登录到远程服务器的
remoteuser
账户,无需输入密码。 -
场景 3:无信任配置 (需要密码 – 极其不安全!)
如果没有任何信任配置 (hosts.equiv
或.rhosts
),rlogin
会提示输入远程用户的密码:$ rlogin remote.server.com -l remoteuser Password: [输入 remoteuser 的密码,密码明文传输!]
警告: 在此过程中输入的密码以及后续所有操作都以明文形式在网络中传输,极易被窃听。
-
-
会话中的操作与退出:
- 成功登录后,你将获得远程服务器的一个命令行 Shell 提示符(如
[remoteuser@remote ~]$
)。 - 操作方式与在本地终端相同。
- 退出登录:
- 输入
exit
或logout
命令。 - 或者按下
Ctrl + D
(EOF)。
- 输入
- 成功登录后,你将获得远程服务器的一个命令行 Shell 提示符(如
-
常见问题与错误:
rlogin: Permission denied
- 远程服务器未运行
rlogind
服务。 - 信任配置不正确(
/etc/hosts.equiv
或~/.rhosts
缺失、格式错误、权限不对)。 - 远程用户密码错误(在需要密码时)。
- 防火墙阻止了 TCP 513 端口。
- 远程服务器未运行
rlogin: No route to host
网络不通,无法访问目标主机名/IP,检查网络连接、DNS 或主机名拼写。
rlogin: .rhosts file not a regular file
/rlogin: .rhosts is world/wroup writable
- 远程用户的
~/.rhosts
文件权限设置错误,必须使用chmod 600 ~/.rhosts
设置为仅属主可读写。
- 远程用户的
- 连接缓慢或卡顿
- 网络延迟或丢包。
- 远程服务器
rlogind
服务问题。
绝对推荐的安全替代方案:SSH (Secure Shell)
ssh
提供了 rlogin
的所有功能,并通过强加密保护所有通信(登录凭证和会话数据),还提供更强大的身份验证机制(如公钥认证)和更多高级功能(端口转发、X11转发等)。
使用 ssh
登录的等效命令:
# 指定远程用户名登录 ssh remoteuser@remote.server.com # 或 ssh -l remoteuser remote.server.com
强烈建议:
- 立即停止使用
rlogin
和rsh
。 - 在服务器上禁用并卸载
rlogind
服务。 - 删除所有
/etc/hosts.equiv
和~/.rhosts
文件(或确保其内容为空),这些文件本身构成严重安全风险。 - 始终使用
ssh
进行远程登录和管理。 配置 SSH 公钥认证以实现安全、便捷的无密码登录。
引用说明:
rlogin
协议定义参考:RFC 1282 (https://datatracker.ietf.org/doc/html/rfc1282)- Linux
rlogin
手册页 (man rlogin
) – 描述命令语法和选项。 - OpenSSH 项目 (https://www.openssh.com/) –
ssh
协议和工具的标准实现。 - CERT 安全建议:禁用不安全的服务 (如 rlogin, rsh, telnet, ftp) – 常见安全最佳实践。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5298.html