1 . 什么是SSH?? ?? ? ??
SSH(Security Shell)安全外壳协议,是较为可靠的,专为远程登录会话和其他网络服务提供安全
保证的协议。
? 对于传统的网络服务程序(例如,FTP,Telnet等)来说,其本质上并不是安全的,主要原因在于,
这些网络应用程序在网络上都是直接使用明文传输口令和数据的,对于别有用心的人来说,这些口令
和数据是很容易被截获的。另外,这些网络服务程序的安全验证方式也是存在弱点的,非常容易受到
中间人(Man-In-The-Middle)这种方式的攻击,简而言之,就是中间人冒充真正的服务器接收你
传输的数据,然后,再将数据转发给真正的服务器,通过这种方式中间人就可以神不知鬼不觉地拿
到你所有数据。
SSH是安全外壳协议,而open-ssh则是SSH的开源实现,CentOS通常是默认安装了open-ssh的。
<ssh是一种网络协议,用于计算机之间的免密登录。>
整个SSH服务是包含SSH服务端(openssh-server)和SSH客户端(openssh-clients)的,常用的
ssh命令就是客户端一部分。
SSH服务端与SSH客户端之间的关系:
节点A想要控制节点B,则节点A上需要安装SSH客户端,而节点B上
需要安装相应的SSH服务端,这样,节点A才能向节点B发送控制命令和数据。通过使用SSH,可以将所
有传输的数据及口令进行加密,从而防止中间人攻击,还可以防止DNS和IP欺骗,另外,使用SSH还有
加快传输速度的好处,原因在于,SSH是可以对数据进行压缩的。
? ? ? ? ssh 提供了两种服务
????????1.远程连接服务功能,即 SSH 服务
? ? ? ? 2.借助ssh 协议来传输数据,提共更安全的 传输服务
2 . SSH免密登录配置
? ? ? ? 对于分布式及去集群环境组件(例如Hadoop, Hbase等),组件的节点通常需要远程登陆控制到其他节点的主机上进shell操作,通常我们采用ssh
????????1.生成密钥
ssh-keygen -t rsa
[root@hadoop102 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /*回车(Enter)
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y /*输入 y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Passphrases do not match. Try again. /* 三次回车
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:IYUYQi6GPBuCMRbrFE2v0wD4/hL/3qO2SEHL94QPBHY root@hadoop102
The key's randomart image is: /* 此为生成的密钥
+---[RSA 2048]----+
|+**.+oE.. |
|*+++oo.. |
|=O....o . |
|=.=o+o o . |
| + o+.+ S |
| o .o = |
| +. o |
| ..o.... |
| ..+=o.. |
+----[SHA256]-----+
? ? ? ? 2.拷贝密钥到指定服务器?
ssh-copy-id 主机名
[root@hadoop102 ~]# ssh-copy-id 192.168.1.111
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.1.111 (192.168.1.111)' can't be established.
ECDSA key fingerprint is SHA256:eCmmod1eScDV8sJcF/vwAMhCVpmxwWMW+JIYfT+r/KE.
ECDSA key fingerprint is MD5:10:38:b6:5a:fb:be:8c:fa:a5:d1:69:8e:39:8b:38:b5.
Are you sure you want to continue connecting (yes/no)? yes /* 这里手动输入 yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.1.111's password: /* 输入对应主机密码
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '192.168.1.111'"
and check to make sure that only the key(s) you wanted were added.
目录
1 . 什么是SSH?? ?? ? ??
2 . SSH免密登录配置
3. 原理剖析
3. 原理剖析
原理:
假设有A和B两台机器,现在需要A机器免密访问B机器 如何实现?
第一步:通过非对称加密算法rsa在A机器上生成公钥和私钥
第二步:将A机器上生成的公钥追加到B机器上的授权列表(authorized_keys)中
第三步:当A机器去访问B机器时,A机器携带公钥.B机器通过查看授权列表中是否有此公钥,有则开始进行验证
第四步:B机器随机生成一个字符串,并用A机器的公钥对其加密,返回给A机器
第五步:A机器拿到加密的字符串,用私钥进行解密,将解密后的字符串返回给B机器
第六步:B机器拿到返回的字符串,经对比一致则验证通过,可以通信
|