单机
1 生成密钥
执行 ssh-keygen -t rsa ( 其中 rsa 是非对称算法)
一路回车到底,生成密钥
且生成之后会在用户的根目录生成一个 “.ssh”的文件夹
2 添加公钥到
将 公钥内容追加到 authorized_keys 中:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
或则
ssh-copy-id hadoop001 (前提需要在 /etc/hosts中配置ip映射的主机名,并设置主机名,如 下图)
注意:如果没有配置主机名,则使用IP方式:ssh-copy-id root@192.168.56.128
3 修改 .ssh目录的权限
修改 .ssh目录的权限必须是700
chmod 700 ~/.ssh
4 修改 authorized_keys 权限
.ssh/authorized_keys文件权限必须是600
chmod 600 ~/.ssh/authorized_keys
5 进行免密访问
在本机 ssh hadoop001 测试
6 设置设置免密登录失效
设置免密登录后,ssh hadoop001 时候,仍然需要输入密码,则进行一下设置:
vi /etc/ssh/sshd_config
PasswordAuthentication yes
PermitRootLogin yes
PubkeyAuthentication yesRSAAuthentication yes (如果是vagrant则需要在 /etc/ssh/ssh_config 修改 )
重启sshd
systemctl restart sshd
集群
本集群以三台机器为例,三台之间相互免密,三台分别是hadoop001、hadoop002、hadoop003
1、三台机器分别配置 /etc/hosts 文件
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.56.128 hadoop001
192.168.56.129 hadoop002
192.168.56.130 hadoop003
2、生成密钥
三台机器分别执行:ssh-keygen -t rsa
3、拷贝公钥
三台机器都执行以下命令 ,将三台机器的公钥(id_ras.pub)全部拷贝到hadoop001主机上的 authorized_keys 文件中。
- ssh-copy-id hadoop001
4、修改权限(此步根据情况可不执行)
修改 ~/.ssh 权限 和 authorized_keys 权限
~/.ssh 默认权限是 700,即 'drwx------.'
authorized_keys 是600,即 '-rw-------.'
如果权限不是以上权限,则需要执行下面命令修改:
三台机器分别修改 ~/.ssh 权限
chmod 700 ~/.ssh
修改主机 ~/.ssh/authorized_keys 权限
chmod 600 ~/.ssh/authorized_keys
5、拷贝公钥
在主机 hadoop001 上分别执行下面命令,将包含三台机器公钥的 authorized_keys 文件分别拷贝到 hadoop002 和 hadoop003。
- scp ~/.ssh/authorized_keys root@hadoop002:~/.ssh/authorized_keys
- scp ~/.ssh/authorized_keys root@hadoop003:~/.ssh/authorized_keys
6、免密测试
任何一台机器进入执行下面任意一个,首次执行需要确认 yes
- ssh hadoop001
- ssh hadoop002
- ssh hadoop003