在配置nutch的时候,我是采用三台服务器来实现的,现在详细讲述一下如何配置在ssh时不用密码来登录,这个也是配置nutch运行起来的前提。
现在linux1是主节点,它需要主动发起SSH连接到linux2和linux3,对于SSH服务来说,linux1就是SSH客户端,而linux2、linux3则是SSH服务端,因此在linux2,linux3上需要确定sshd服务已经启动。简单的说,在linux1上需要生成一个密钥对,即一个私钥,一个公钥。将公钥拷贝到linux2,linux3上,这样,比如当linux1向linux2发起ssh连接的时候,linux2上就会生成一个随机数并用linux1的公钥对这个随机数进行加密,并发送给linux1;linux1收到这个加密的数以后用私钥进行解密,并将解密后的数发送回linux2,linux2确认解密的数无误后就允许linux1进行连接了,这样就完成了一次公钥认证过程。
首先,在三台机器上同时加上nutch用户:
[root@linux1/2/3 nutch]# useradd nutch -d /nutch/home -g users
对于本文中的三台机器,在linux1上生成密钥对:
[nutch@linux1:~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/nutch/home/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /nutch/home/.ssh/id_rsa.
Your public key has been saved in /nutch/home/.ssh/id_rsa.pub.
The key fingerprint is:
40:b8:e9:8f:0a:f6:ce:e0:73:a8:6a:7e:52:b4:45:ca nutch@linux1
这个命令将为linux1上的用户nutch生成其密钥对,询问其保存路径时直接回车采用默认路径,当提示要为生成的密钥输入passphrase的时候,直接回车,也就是将其设定为空密码。生成的密钥对id_rsa,id_rsa.pub,默认存储在/nutch/home/.ssh目录下。然后将id_rsa.pub的内容复制到每个机器(也包括本机)的/nutch/home/.ssh/authorized_keys文件中,如果机器上已经有authorized_keys这个文件了,就在文件末尾加上id_rsa.pub中的内容,如果没有authorized_keys这个文件,直接cp或者scp就好了,下面的操作假设各个机器上都没有authorized_keys文件。
对于linux1
[nutch@linux1:.ssh]$ cp id_rsa.pub authorized_keys
对于linux2和linux3
[nutch@linux2:~]$ mkdir .ssh
对于linux1
[nutch@linux1:.ssh]$ scp authorized_keys linux2:/nutch/home/.ssh/
此处的scp就是通过ssh进行远程copy,此处需要输入远程主机的密码,即linux2机器上nutch帐户的密码
[nutch@linux2:.ssh]$ chmod 644 authorized_keys
这一步非常关键,必须保证authorized_keys只对其所有者有读写权限,其他人不允许有写的权限,否则SSH是不会工作的
[nutch@linux2:.ssh] ls –la
drwxr-xr-x 2 nutch users 4096 11月 5 13:31 .
drwx------ 3 nutch users 4096 11月 5 13:27 ..
-rw-r--r-- 1 nutch users 222 11月 5 13:31 authorized_keys
注意每个机器上的.ssh目录的ls -la都应该和上面是一样的
测试一下:
[nutch@linux1 .ssh]$ ssh linux3
[nutch@linux3 ~]$
很爽啊,不用再输入烦人的密码了
Nutch十八掌,打完收工!
分享到:
评论
做沙发呢,我一直关注你的博,你的搜索引擎技术,哈哈。。。不知能否将其运用在windows上。。。望有这方面的介绍,谢过。。。。
nutch在开发上有一定的局限性,虽然它是用java来开发的,但是相关的工具是用shell脚本来处理的,如果在要windows上实现的话,需要安装著名的cygwin来支持。如果有可能的话,可以做一些用bat实现一套。