安装Hadoop Pseudo-Distributed Cluster时需要配置本机无密码通过ssh访问localhost
一种比较方便的方法是在本机用户下生成一个dsa公钥,将其追加到本机的~/.ssh/authorized_keys文件中
可是我在Ubuntu Server上始终没法配置成功,过程如下:
刚开始,用putty通过ssh连到服务器上,试图配置,失败
怀疑两点:
1)ssh登陆Ubuntu后,由于不是本地登录的,生成的公钥有可能不是本地用户的;
2)由于安装Ubuntu系统时选择了加密用户主目录,以至于登录时必须有用户口令,否则无法访问主目录
首先验证第一点:
在服务器跟前接上键盘、显示器,本地登录后配置无密码登录,虽说生成的公钥确实和ssh登录时生成的公钥不一样,但仍然没成功,故排除第一点的可能
再验证第二点:
在当前服务器上添加一个新用户hadoop,主目录为/srv/hadoop,不加密
$ sudo mkdir /srv/hadoop $ sudo useradd -d /srv/hadoop -s /bin/bash hadoop $ sudo chown hadoop /srv/hadoop
本地登录hadoop用户,设置ssh无验证访问localhost成功
删除authorized_keys文件,ssh远程登录hadoop用户,设置ssh无验证访问localhost同样成功
然后换台用户主目录未加密的服务器,无论本地登陆还是ssh远程登录,都可以设置成功
这就验证了第二点怀疑是正确的
因此,安装hadoop的服务器上最好分外添加一个名为hadoop的系统用户(而不是在系统安装时就将用户名设置为hadoop),或者在系统安装时不要选择对用户主目录加密(不加密其实有些不安全)。