ssh免密码登录root用户

ssh 免密码登录root用户

  • ubuntu 16.04 LTS
  • 遇到这个问题是在使用start-all.sh启动hadoop时,提示没有权限执行mkdir等命令,于是使用 sudo ./shart-all.sh 启动,提示要输入要远程连接的主机上的root账户密码。
  • 之后意识到我之前实在hadoop账户下设置的ssh免密码登录,能够免密码登录到不同的主机上的hadoop账户,但是不能登录到其root账户。
  • 没有找到完全靠谱的方法,所以自己总结一下。

解决方法:

  • 现在A主机要通过ssh连接到B主机,需要在A主机上生成一个ssh公钥,然后写入到B主机的authorized_keys文件即可。

1 在root账户下生成公钥
ssh-keygen -t rsa -P ''

2 将生成的公钥先写入A主机的authorized_keys文件
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

3 将A主机下的authorized_keys发送到B主机的 root账户的 ~/.ssh/ 目录下
这时还没设置免密码登录,所以发送时需要输入B主机root账户的密码,我用的虚拟机装完系统后还没设置ubuntu的root账户初始密码,所以需要先设置一下。

  • (1) 在B主机 输入 sudo passwd ,之后输入要设置的密码
  • (2) 之后A主机还是不能通过ssh输入密码的方式连接到B主机的root账户,因为ssh默认不能连接到root账户,需要更改一下B主机ssh的配置,修改 /etc/ssh/sshd_config 文件。
    使用vi或gedit打开后,找到 PermitRootLogin prohibit-password ,这里默认的是禁止密码登录(即禁止登录?) ,其修改为yes,即 PermitRootLogin yes ,然后执行service sshd restart重启ssh服务 ,这里好像只能用vi编辑器来修改。
    修改完成后,重启B主机的ssh服务。之后测试一下,A主机能否连接到B主机,ssh node1,然后输入密码,发现终于可以连上了。这里node1就是B主机的主机名

  • (3) 将A主机中的公钥,发送到B主机,先在B主机的root账户下执行
    ssh-keygen -t rsa,创建一个 .ssh 目录
    之后在A主机的root账户下执行
    scp ~/.ssh/authorized_keys root@node1:~/.ssh/
    注意这里使用scp命令发送文件到目录需要先创建一个目录,或者将A主机的authorized_keys直接发送到 B主机的~/.ssh/authorized_keys 文件中
    之后修改B主机接受到的authorized_keys的权限,在B主机中执行
    chmod 600 ~/.ssh/authorized_keys

    到这终于实现了使用ssh无密码访问root账户。

    之后还得配置其他主机,所以准备写个shell脚本。

你可能感兴趣的:(hadoop)