欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos Linux环境下,经常通过SSH从一台服务器登录到另一台服务器,并且登录身份不是root账号,
欢迎访问我的GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
- Linux环境下,经常通过SSH从一台服务器登录到另一台服务器,并且登录身份不是root账号,每次都要输入密码挺麻烦的,所以今天就来实战如何配置非root账号的免密码登录;
实战环境
- 本次实战环境是三台CentOS 7.5机器,它们的相关信息如下所示:
准备工作
- 确认ssh服务已经安装并打开;
- 打开文件/etc/ssh/sshd_config,确保以下配置已经添加(如果被"#"注释了就把"#"删除):
- 三台机器的/etc/hostname文件中的内容分别是node0、node1、node2;
- 三台机器的/etc/hosts文件尾部都添加以下三行内容(请按照自己机器的ip地址来填写):
- 三台机器上都有非root账号,为了方便操作,这里为三台机器都创建了名为hadoop的账号和群组,创建命令:
- 创建完账号后记得用命令passwd初始化hadoop账号的密码;
- 在node0机器上输入ssh hadoop@node1,尝试ssh登录node1,此时由于未配置免密码登录,所以控制台要求输入node1的密码,如下:
- 准备工作已经完成,接下来开始实战免密码登录配置;
生成秘钥(三台机器都要执行)
- 以hadoop账号登录;
- 输入ssh-keygen -t rsa,然后一路回车,顺利生成秘钥文件,如下:
- 进入目录~/.ssh/可见如下内容:
配置秘钥授权文件
- 以hadoop账号登录node0机器;
- 生成一个空白文件:
- 将node0自己的公钥放入文件authorized_keys中:
- 以hadoop账号登录node1机器,执行以下命令,即可将node1的公钥传输到node0机器,文件名为node1.id_rsa.pub:
-
期间会要求输入node0的hadoop账号的密码,输入后传输完成,在node0的/home/hadoop/.ssh目录下,多了个名为node1.id_rsa.pub的文件;
- 在node0机器执行以下命令,即可将node1.id_rsa.pub的内容写入authorized_keys文件:
- 此时authorized_keys文件中已经有了node0和node1的公钥;
- 以hadoop账号登录node2机器,执行以下命令,即可将node2的公钥传输到node0机器,文件名为node2.id_rsa.pub:
- 期间会要求输入node0的hadoop账号的密码,输入后传输完成,在node0的/home/hadoop/.ssh目录下,多了个名为node2.id_rsa.pub的文件;
- 在node0机器执行以下命令,即可将node2.id_rsa.pub的内容写入authorized_keys文件:
- 此时authorized_keys文件中已经有了node0、node1、node2的公钥;
同步秘钥授权文件
- 以hadoop账号登录node0机器,执行以下命令将秘钥授权文件同步到node1机器:
- 以hadoop账号登录node0机器,执行以下命令将秘钥授权文件同步到node2机器:
- 至此,秘钥授权文件已经同步到所有机器,如果前面的所有操作用的是root账号,此时已经可以免密码登录成功了,但是今天我们用的不是root账号,此时在node0输入命令ssh hadoop@node1,却发现依然要求输入node1的hadoop账号的密码,这是因为文件和文件夹权限的问题导致的,接下来解决权限问题;
调整文件夹和文件的权限(三台机器都要执行)
- 先调整文件夹~/.ssh的权限:
- 再调整文件~/.ssh/authorized_keys的权限:
- 至此,非root账号的SSH免密码登录配置已经完成,在node0输入命令ssh hadoop@node1试试,如下,顺利登录,不需要输入密码:
- 再去node1、node2机器上试试SSH登录其他机器,发现也能免密码登录;
欢迎关注51CTO博客:程序员欣宸
学习路上,你不孤单,欣宸原创一路相伴...