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 -p /root/.ssh/authorized_keys user@ip:/root/.ssh/authorized_keys
注意这里使用scp命令发送文件到目录需要先创建一个目录,或者将A主机的authorized_keys直接发送到 B主机的~/.ssh/authorized_keys 文件中
之后修改B主机接受到的authorized_keys的权限,在B主机中执行
chmod 600 ~/.ssh/authorized_keys
到这终于实现了使用ssh无密码访问root账户。
浙公网安备 33010602011771号