zoukankan      html  css  js  c++  java
  • Linux的rsh配置rhost

     
     参考: redhat linux下配置rsh和rcp: http://linux.chinaunix.net/techdoc/net/2008/06/30/1014112.shtml                                                                
                                      
                                      
     1:安装前准备: 
     机器A:192.168.0.104(machine_a) (安装rsh server) 
     机器B:192.168.0.106(machine_b) (rsh client ) 
      
     2: 首先确认机器A是否安装rsh包: 
     [root@mg04 root]# rpm -aq |grep rsh 
     rsh-0.17-14 
     rsh-server-0.17-14 
     如果没有安装以上两个包,请找到相关软件安装(如果是LINUX,可以从安装碟中找到) 
     安装包: 
     rpm -ivh rsh-0.17-5 (linux 操作系统) 
     rpm -ivh rsh-server-0.17-5 (linux 操作系统) 
      
     或者在root下使用yum install rsh 和 yum install rsh-server来自动安装。 (使用yum安装rsh-server的时候xinetd也会被自动安装)
      
     3:确认机器A是否启动rsh 服务: 
     方法一: 
     使用命令setup,查看service是否将
     rsh/rlogin/rexec 加上*,如果加上*表示可以启动。 
     /etc/rc.d/init.d/xinetd restart 或者 service xinetd restart
     方法二: 

    或者使用chkconfig检查rsh/rlogin/rexe是有启动。 

     rsh 属于xinetd服务,可以直接修改/etc/xinetd.d/rsh脚本文件来配置。 
     service shell 
     { 
     disable = no 
     socket_type = stream 
     wait = no 
     user = root 
     log_on_success += USERID 
     log_on_failure += USERID 
     server = /usr/sbin/in.rshd 
     } 

    对/etc/xinetd.d/rlogin 和/etc/xinetd.d/rexec进行类似的设置。 

     当然方法很多,目的就是使用rsh/rlogin/rexec服务能启动。 
     /etc/rc.d/init.d/xinetd restart 
     检查是否启动: rsh server 监听和TCP 是514。 
     [root@mg04 root]# netstat -an |grep 51
     tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 
     如果能看到514在监听说明服务器已经启动。 
     4: 配置机器A的hosts文件/etc/hosts例如:(貌似不能直接使用ip来rsh)
    127.0.0.1               localhost.localdomain localhost
     ::1             localhost6.localdomain6 localhost6
     192.168.0.104   machine_a.localdomain machine_a
     192.168.0.106  machine_b.localdomain machine_b

      

    5: 配置机器A的rsh server: 

      修改/etc/securetty文件:
      echo rsh >>/etc/securetty 

      echo rlogin >>/etc/securetty
      echo rexec >>/etc/securetty  

      如果打算用AAA作为rsh用户的话: 
      先用AAA登录到机器A中进行以下操作: 
     cd ~/ 
     echo "machine_a AAA" >>.rhosts  #允许machine_a 以AAA访问 ,即允许从rshserver所在的机器运行rshclient。
     echo "machine_b AAA" >>.rhosts  #允许machine_b以AAA访问。

     echo +AAA >>.rhosts 允许所有的机器以AAA访问,貌似linux下不起作用。

     重启rsh server. (service xinetd restart)
     
     5:测试和注意的问题: 
     rshserver机器作为rshclient的机器测试: rsh -l AAA localhost ps -ef 或者 rsh -l AAA machine_a ps -ef
     登录到B机器machine_b进行测试: rsh -l AAA machine_a ps -ef 
     看是否能看到结果。如果看到  rsh -l AAA machine_a ps -ef 
     Permission denied. 
     这是由于权权限问题,一般是由于 .rhosts没有配置正确。.rhosts一般位于 
     rsh server服务器相对应账号目录下比如AAA(与.bash_profile在同一目录) 
     rsh在执行命令有时会找不到。rsh 在调用命令是最好使用绝对路径。默认搜索路径为: 
     [root@mg04 etc]# rsh -l AAA 192.168.0.4 env |grep PATH 
     PATH=/usr/bin:/bin 
     
    hosts.equiv和.rhosts文件  http://linux.sheup.com/linux/linux2007.htm 
      
     远程用户启动rlogin访问你的本地主机,此时做如下安全性检查: 
     1. 本地rlogind在本地/etc/passwd文件中寻找远程用户名,没有则拒绝访问。 
     2. /etc/passwd中存在远程用户名,rlogind在/etc/hosts.equiv寻找远程主机名,找到则允许访问。 
     3. /etc/hosts.equiv无远程主机名,rlogind在$HOME/.rhosts寻找远程主机名,找到且该项后无用户名则允许访问,找到且该项后有用户名,若远程用户名位于其中,则允许访问。注意这里的$HOME是与远程用户同名的本机用户的主目录。 
     4. 若通过了/etc/passwd的检查,但没有通过/etc/hosts.equiv或者$HOME/.rhosts的检查,远程用户给出口令可以登录本机,但无法使用rcp、rsh等。反之则可以使用rcp或者rsh。 
     5. /etc/hosts.equiv中的+意味着任意主机,此时与/etc/hosts无关。netterm下rlogin除root外的所有用户可以成功,solaris下简单的rlogin hostname同netterm,但是rlogin -l username hostname不成功。这个事实说明netterm下rlogin的时候,指定的参数实际上是远程主机的当前用户名。还说明hosts.equiv文件不支持rlogin -l username hostname,不支持root的rlogin。
     
     6. rlogin -l username hostname和rlogin hostname的检查有点细微的差别,首先在/etc/passwd的检查中是以-l的参数为准的,没有-l参数才使用远程主机的当前用户名,所谓当前用户名是考虑了su出来的用户。其次,$HOME也是先以-l参数为准。第三,$HOME/.rhosts文件中的用户名不是针对-l参数来的,而是针对远程主机的当前用户名来的,但是对于这个远程主机的当前用户名,并不要求出现在/etc/passwd文件中。这第6条尤其重要,许多不成功的$HOME/.rhost就是因为对第6条的不了解。
     
     7. $HOME/.rhosts文件的权限问题,chmod 0都没有影响,不过当时是处理root用户。对于一般用户,一定要保证.rhosts文件对于$HOME的属主是可读的。一般来说,这个文件最好chmod 400。对于root,如果不希望某个用户建立自己的.rhosts或者想替该用户建立.rhosts后不允许该用户自己修改,可以通过chown root .rhosts然后chmod 444 .rhosts实现。除了root,如果$HOME/.rhosts文件的属主和$HOME的属主不一致,检查将失败。
     
     8. $HOME/.rhosts文件中每行只跟一个用户名,若想多个指定,只好分多行指定用户名。
     
     9. sco unix下$HOME/.rhosts中若用+代表主机,与其他Unix系统不同,这里的+没有任何特殊的意义,所以检查将失败。但是用户名仍然可以用+代表。并且sco unix下若root的.rhosts文件go+w,则检查失败。
     
     10. 建议man rhosts看看,各个系统有许多细微的差别。

    完! 

    其他注意:

    2. 直接使用 rsh <host> 命令方式和使用 rsh <host> <cmd> 命令方式,其实本质上是不一样的,前者实质上调用的是 rlogin 程序,而后者才是真正意义上的 remote shell。所以,前者对应的是 rlogin 服务的端口,为 513;后者对应的才是 remote shell 服务的端口 514。而使用 rsh <host> <cmd> 命令方式时,具体过程还是有些特殊的,那就是,本地机先链接服务端的 514 端口,然后服务端还要以约定好的端口(1021~1023)与客户端相连,所以要顺利执行该命令的话,即要求服务端允许 514 端口链接,还要求本地机允许1021~1023端口的链接,这样就必须正确配置防火墙。如果没有在本地机允许1021~1023端口,则会出现如下错误: poll: protocol failure in circuit setup
    3. 网上有的说 rsh 连接不正常可以通过修改 /etc/securetty 文件,添加 rsh 和 rlogin 两行,并修改 /etc/pam.d/rsh 文件,注释掉 pam_rhosts_auth.so 那一行就可以。而事实证明,在没有开放相应端口的情况下,这么做了没有用。而按我上面说的4步做了以后,不做这两条也完全可以。所以,这两条对我的系统完全不必要。

    上面所说的只对普通用户(非root)有效,若是对root用户,上面的设置还不能实现无密码访问,甚至都可能连不上。对root用户,应增加以下两条:

    1. 必须要在 /etc/securetty 中添加上 rsh 和 rlogin 才能分别使用两个服务。

    2. 必须要在 /root/.rhosts 中加入等价的主机名或IP,这些机子才能无密码访问该机器。

  • 相关阅读:
    mybatis Result Maps collection already contains value for com.ebways.dictionary.dao.impl.PtInfoDaoImpl.beanMap
    spring mvc 重定向加传参
    http apr 8080 exec 3解决
    jsp调用java方法 function taglib
    java读取xml文件
    jsp自定义标签(时间格式化包括Long转时间)
    JAVA-JSP内置对象之request获得所有的参数名称
    JAVA-JSP内置对象之request对象参数
    JAVA-JSP内置对象之移除属性
    JAVA-JSP内置对象之application范围
  • 原文地址:https://www.cnblogs.com/itech/p/2678097.html
Copyright © 2011-2022 走看看