如果你管理一台Linux服务器,那么你就会知道每次SSH登录时或者使用scp复制文件时
都要输入密码是一个多么繁琐的过程.使用SSH Key来实现SSH无密码登录,而且使用
scp复制文件时也不需要再输入密码.除了方便SSH登录,scp复制文件外,SSH无密码
登录也为Linux服务器增加了又一道安全防线.
SSH全名Secure Socket Shell,安全外壳传输协议。
专为远程登录会话和其他网络服务提供安全性的协议
openssh
在主机中开启了openssh服务, 对外开放了远程连接的接口,端口号:22
openssh的服务端:sshd /etc/ssh/sshd_config
openssh的客户端:ssh ~/.ssh
ssh————————————>sshd
client server
ssh
ssh= secure shell
可以让远程主机通过网络访问sshd服务,开始一个安全shell,并对其进行操控
sshd
可以通过网络在主机中开启shell的服务
SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。
SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。
SSH 这个终端命令只能在Linux或者UNIX系统下使用
如果在Windows系统中,可以安装PuTTy或者 XShell客户端软件连接SSH Server
SSH远程登录的安全外壳协议
有两种身份发验证机制:
1.用户名+密码验验
2.密钥验证
本地使用私钥对数据进行加密/解密
服务器使用公钥对数据进行加密/解密
非对称加密算法: 1)使用公钥加密的数据,需要使用私钥解密
2)使用私钥加密的数据,需要使用公钥解密
ssh无密码登录流程:
1.首先在每台节点上都生成一对公钥和私钥
$ ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
-f文件名
指定密钥文件的文件名。
-P密码
提供(旧)密码短语。
-t dsa | ecdsa | ed25519 | rsa | rsa1
指定要创建的密钥的类型。可能的值为
协议版本1的“ rsa1”和“ dsa”,“ ecdsa”,“ ed25519”或
协议版本2的“ rsa”。
-P表示密码,-P ‘’ 就表示空密码;
也可以不用-P参数,这样就要三车回车,用-P就一次回车
#它在~下生成/.ssh目录,.ssh下有id_rsa和id_rsa.pub
ssh-keygen 默认使用 RSA 算法,长度为 2048 位,生成一个私钥文件 id_rsa
和一个公钥文件 id_rsa.pub,两个文件默认保存在用户的 ~/.ssh 目录下。
你可以在命令行交互过程指定密钥文件路径,也可以设置密钥口令,如果设置了
密钥口令,在使用密钥进行登录时,需要输入口令。
2.创建认证库cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
可以理解为认证库中有哪台节点的公钥,就可以无密码登录到哪个节点上,
先把自己的公钥放到认证库中, 此时,自己可以登录自己了。
第一次登录是需要输入密码的.
3.如果A想无密码登录B
那么A就需要有B的公钥,所以在B节点上生成一对密钥对,公钥和私钥,
私钥是留给自己的, 公钥是给谁可以有自己家的钥匙可以无密登录
远程复制scp 公钥 给对方哪个用户crx@IP地址或域名:对方的路径
[crx:savle1] scp id_rsa.pub crx@master:/home/crx/.ssh/id_rsa1.pub
$> ssh master
当第一次链接远程主机时,会提示你当前主机的”公钥指纹”,询问你是否继续,
如果选择继续后就可以输入密码进行登录了,当远程的主机接受以后,该台服务器的
公钥就会保存到~/.ssh/known_hosts文件中。
1.配置SSH
a.修改hostname
$>su root
$>gedit /etc/sysconfig/network
【HOSTNAME=master】
b.修改hosts文件
$>gedit /etc/hosts
【在文件后追加:ip 主机名:
192.168.142.138 master
192.168.142.139 slave1
192.168.142.140 slave2
】
c.reboot;
d.生成秘钥
$>ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
【说明:-t设置生成秘钥的算法,采用的rsa;-P设置密码,默认为空;-f设置秘钥生成的文件位置,~/.ssh】
[crx@master .ssh]$ ls
id_rsa id_rsa.pub known_hosts
[hadoop@master .ssh]$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0GqjKVgA/A8WAX+bKazzrmQav9YK5NlCs3jbE8SnO+fGd0DP/rYjzQrqVVj39KV/1NDBOXk+fGoDTW8h01eXnle7d3dlcQinLZ5V5NDKCPZfaFJwMM+YuIa+6kpH9A5PVD+7n8MQU4H5cVq32Ct2rvIH/SSENkQ0uqQswB6jNujfo2LZn1T37L6cwecavAFjmuDCL65bbRcJB68FDASB+u80kagBpmzUv1Z2CSm3Vilj5qpPXCl/RNu9JxuznoeBlz/pijVqrr/GYaX5Shx6nYNEpgfmrPgO8b6NIT76ExThjYBKLbYRmNdsK1pgk4S6aJCMaHwnUkikT6HKCLhFxw== crx@master
e.生成认证库
$>cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[hadoop@master .ssh]$ cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0GqjKVgA/A8WAX+bKazzrmQav9YK5NlCs3jbE8SnO+fGd0DP/rYjzQrqVVj39KV/1NDBOXk+fGoDTW8h01eXnle7d3dlcQinLZ5V5NDKCPZfaFJwMM+YuIa+6kpH9A5PVD+7n8MQU4H5cVq32Ct2rvIH/SSENkQ0uqQswB6jNujfo2LZn1T37L6cwecavAFjmuDCL65bbRcJB68FDASB+u80kagBpmzUv1Z2CSm3Vilj5qpPXCl/RNu9JxuznoeBlz/pijVqrr/GYaX5Shx6nYNEpgfmrPgO8b6NIT76ExThjYBKLbYRmNdsK1pgk4S6aJCMaHwnUkikT6HKCLhFxw== crx@master
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAv8m+K2C41R9cWwsLdGKycYtN+P41L+5ceRfUgIOt69hRol1vQHn+gyVNNC+MSPKgIb8qYKZvLIGNdkbtmoEkRqBe8ROYz75PEOrzACJtFlAjKfCXesTPAhFppRXWF62SL9JvHKVeiCG/D/rhJBI1+NJIBXe+2LbY/e4gWhzIoyAMNNz9AXWjRrypXQ3tSk/5mrkjkR01U2Efc+IM/k5Y7dfe1F102WYiC5E8qv00Ny1YyVfnQiBBKDADDHov/y4xrD0sAJ+Hwe1uQdmGJqw9HHCnQrwlfP9u7e0Aa1owdHRZaSR7uh5SDshghu+6UQ6pGcTCnBC/QgtufUiah86djw== crx@slave1
f.修改认证库的权限为600
$>chmod 600 ~/.ssh/authorized_keys
g.测试登录自己的家下
ssh master
- 三个节点之间无密码登录操作 SSH无密登录(参照hadoop官网)
master > c d . s s h m a s t e r >cd .ssh master >cd.sshmaster>ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
master > c a t / . s s h / i d r s a . p u b > > / . s s h / a u t h o r i z e d k e y s