ceph存储 Linux远程操作(rcp/rsh)命令实战

1.1为使用 rcp 做准备
要使用 rcp,需要具备以下条件:
(1)如果系统中有 /etc/hosts 文件,系统管理员应确保该文件包含要与之进行通信的远程主机的项。
/etc/hosts 文件中有一行文字,其中包含每个远程系统的以下信息:
internet_address   official_name   alias
例如:
9.186.10.***  blade1.ibm.com.cnblade1
(2).rhosts 文件
.rhosts 文件位于远程系统的主目录下,其中包含本地系统的名称和本地登录名。
例如,远程系统的 .rhosts 文件中的项可能是:
blade1 root
其中,blade1 是本地系统的名称,root 是本地登录名。这样,blade1 上的 root 即可在包含 .rhosts 文件的远程系统中来回复制文件。
1.2 配置过程
只对root用户生效
 1. 在双方root用户根目录下建立.rhosts文件,并将双方的hostname加进去.在此之前应在双方的 /etc/hosts文件中加入对方的IP和hostname
2. 把rsh服务启动起来,redhat默认是不启动的。
 方法:用执行ntsysv命令,在rsh选项前用空格键选中,确定退出。然后执行:
 service xinetd restart即可。
3. 到/etc/pam.d/目录下,把rsh文件中的auth required /lib/security/pam_securetty.so
 一行用“#”注释掉即可。(只有注释掉这一行,才能用root用户登录)
1.3 命令使用
将文件复制到远程系统
要将本地系统中的文件复制到远程系统,请使用以下命令:
rcplocal_fileremote_hostname:remote_fileEnter
注意,如果当前目录下没有 local_file,则除本地文件名外,还需要提供相对路径(自当前目录开始)或绝对路径名(自 / 开始)。
仅当希望将 remote_hostname 上的 remote_file 放到其他目录(远程主目录除外)下时,才需要为其指定完整的(绝对)路径。
示例
将当前目录下的 myfile 复制到名为 blade3的远程系统:
rcp myfile blade3:/home/root/otherdirEnter
在这种情况下,myfile 被复制到远程子目录 otherdir 下,名称仍为 myfile。如果仅提供了远程主机名,rcp 将把 myfile 复制到远程主目录下,名称仍为 myfile。
还可以在目的目录中包含文件名。例如,将文件复制到名为 blade3的系统中:
rcp myfile blade3:/home/root/otherfileEnter
在这种情况下,将 myfile 复制到远程目录root 下并将其命名为 otherfile。
从远程系统复制文件
要将远程系统中的文件复制到本地目录下,请使用以下语法:
rcp remote_hostname:remote_file local_fileEnter
示例
将远程系统 blade3中的 myfile 复制到当前目录:
rcp blade3:/home/root/myfile .Enter
点 (.) 是“当前目录”的简写形式。在这种情况下,远程目录中的 myfile 被复制到当前目录下,名称仍为 myfile。
如果希望用新名称复制文件,请提供目标文件名。
如果希望将 myfile 复制到本地系统中的其他目录下,请使用以下绝对或相对路径名:
rcp blade3:/home/root/myfile otherdir/ Enter
或者,如果希望用其他文件名将文件复制到其他目录下:
rcp blade3:/home/root/myfile otherdir/otherfile Enter
将目录复制到远程系统
要将本地目录及其文件和子目录复制到远程系统,请同时使用 rcp 和 -r(递归)选项。
语法如下:
rcp –r local_dir remote_hostname:remote_dir Enter
如果当前目录下没有 local_dir,则除本地目录名外,还需要提供相对路径名(自当前目录开始)或绝对路径名(自 / 顶级目录开始)。另外,如果主目录下没有 remote_dir,则 remote_dir 将需要一个相对路径(自主目录开始)或绝对路径(自 / 开始)。
示例
要将名为 work 的子目录完整地复制到 blade1 远程计算机中的主目录下名为 products 的目录,请键入以下内容:
rcp –r work blade1:/home/root/products Enter
此命令在 blade1:/home/root/products 下创建名为 work 的目录及其全部内容(假定 /home/root/products 已存在于 blade1 中)。
本示例假定用户处于包含 work 的本地目录下。否则,必须提供该目录的相对或绝对路径,如/home/root/work。
从远程系统复制目录
要将远程目录及其所有文件和子目录复制到本地目录,请在以下语法中使用 rcp 和 -r(递归)选项。
rcp –r remote_hostname:remote_dir local_dir Enter
示例
要将名为 work 的远程目录复制到当前目录,请键入以下内容:
rcp –r blade1:/home/root/work .Enter
点 (.) 表示当前目录。将在此目录下创建 work 目录。
 
2.1 rsh使用条件 同1.1
2.2 rsh配置过程
直接rsh作为root.
a.在服务器上运行/urs/bin/ntsysv选中rexec,rlogin,rsh三项服务。
b.运行#/sbin/servicexinetdrestart启动该三项服务。
c.运行#echo"rexec">>/etc/securetty;echo"rlogin">>/etc/securetty;echo"rsh">>/etc/securetty
d.在服务器上运行#echo"你的ip地址root">>/root/.rhosts
或者#echo"你的主机名root">>/root/.rhosts且确保在服务器上的/etc/hosts中有主机名和ip地址的映射关系
e到/etc/pam.d/目录下,把rexec,rlongin,rsh文件中的auth required /lib/security/pam_securetty.so 一行用“#”注释掉即可。(只有注释掉这一行,才能用root用户登录)
2.3 rsh命令用法
命令rsh有两个一般的参数,一个系统名和一个Linux命令。语法如下所示:
$rsh remote-sytem-neame Linux-command
在下面的例子中,rsh命令将在远程系统blade1中执行一个ls命令以列出在blade1中目录/home/root中的文件。
$rsh blade1 ls /home/root
除非是引用特定字符,否则它将被本系统解释转换,对于控制标准输出的特殊字符更是如此,象重定向或管道字符。下面的例了中列出远程系统上的文件,并把它们送到本系统中的标准输出。重定向操作由本地系统解释,并把输出改向到本地系统中的文件myfiles中。
$rsh blade1 ls /home/root>myfiles 
如您引用一个特定字符,它将成为Linux命令的一部分被远程系统解释。引用重定向操作符将允许您在远程系统中执行重定向操作。下面的例子中,引用一个重定向操作符。它变成Linux命令的一部分,包括命令的参数,文件名myfile。命令ls产生一列文件名并把它们重定向到远程系统中的一个文件myfile中。
$rsh blade1 ls /home/root '>' myfiles
对于管道操作也是如此。下面例子中第一个命令输出一列文件到本地的打印机中。标准的输出能过管道输出到您的在线打印机中。第二个命令中,一列文件将输出远程系统的打印机上。管道线被远程系统解释。输送标准输出到远程系统的打印机上。
$rsh blade1 ls /home/root | lpr
$rsh blade1 ls /home/root '|' lpt

==================================================================================
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,这些机子才能无密码访问该机器。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值