文章目录
  1. 1. 前言
  2. 2. 开始吧
    1. 2.1. 问题1:no route to host
    2. 2.2. 问题2:poll: protocol failure in circuit setup
    3. 2.3. 问题3:Permission Denied
  3. 3. 上述问题的对策
    1. 3.1. 关闭防火墙
    2. 3.2. 关闭SELINUX
    3. 3.3. 写securetty

引言:计算机系统结构试验,要做centos上的ssh和rsh的免密互连,几个小时终于踩完坑了。


系统环境:CentOS 7

前言

对于rsh具体怎么装,网上遍地教程,就不讲了。

下面主要关注各种问题的解决方案。

注意,本博文建立在实验环境,因此对策比较极端,在真实环境中请自行考虑安全性因素。

开始吧

问题1:no route to host

首先判断hostname是否正确,网络是否连通

1
ping hostname

如果不连通,用ip address看看地址是不是变了(我还真的遇到过这种事情)

如果连通,按下文对策在服务端关闭防火墙和SELINUX,然后重启服务端

问题2:poll: protocol failure in circuit setup

这个问题是查了日志才知道的,具体方法在服务端tail -f 10 /var/log/messages,发现是客户端的端口连不通,于是:

按下文对策在客户端关闭防火墙和SELINUX

问题3:Permission Denied

这个问题的一看就是因为没有在$HOME/.rhosts/etc/hosts.equiv上面设置受信赖的客户端。

关于这两个文件的区别,见 【关于/etc/hosts.equiv和$HOME/.rhosts的区别】

如果你已经正确配置了上述两个文件,还是出现该问题,那么:

1
2
3
# 授予文件644权限
chmod 644 ~/.rhosts
chmod 644 /etc/hosts.equiv

你没有看出错,也没有听错,确实是644,假如你授权了777,那么不好意思,权限过大,该文件将失效。

不要问我是怎么发现的。

上述问题的对策

关闭防火墙

啥也不说了,直接贴代码

在server端和client端:

1
2
3
4
# 中止服务
systemctl stop firewalld
# 删除开机自启
systemctl disable firewalld

关闭SELINUX

在server端:

1
2
3
4
# 中止服务
setenforce 0
# 删除开机自启
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux

写securetty

如果你防火墙也关了,SELINUX也关了,还是出现问题,那么你可以尝试在server端和client端:

1
2
3
echo rsh >> /etc/securetty
echo rlogin >> /etc/securetty
echo rexec >> /etc/securetty

大功告成!
文章目录
  1. 1. 前言
  2. 2. 开始吧
    1. 2.1. 问题1:no route to host
    2. 2.2. 问题2:poll: protocol failure in circuit setup
    3. 2.3. 问题3:Permission Denied
  3. 3. 上述问题的对策
    1. 3.1. 关闭防火墙
    2. 3.2. 关闭SELINUX
    3. 3.3. 写securetty