Linux

hadoop ssh localhost ssh到localhost问题的解决

安装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),或者在系统安装时不要选择对用户主目录加密(不加密其实有些不安全)。