1 先决条件
- 本测试系统为Linux
- 必须保证Linux上安装了ssh的软件
2 SSH定义
SSH是一种网络协议,用于计算机之间的加密登录。
如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露
3 SHH登录原理
3.1 公钥加密
- 远程主机收到用户的请求,把自己的公钥发给用户。
- 用户使用这个公钥,将登录密码加密后,发送回来。
- 远程主机用自己的私钥,解密登录密码,如果密码正确,就同意。
3.2 无秘钥登录(SSH免密码登录)
原因:使用密码登录,每次都必须输入密码,非常麻烦。SSH还提供了公钥登录,可以省去输入密码的步骤。
所谓的“公钥登录”,就是用户将自己的公钥存储在远程计算机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥机密后,在发回来。远程主机用事先存储的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不在要求密码。
生成公钥/私钥对
[root@hadoop .ssh]# ssh-keygen -t rsa
我在这里客户端和远程服务器用的是一台linux
在home/.ssh目录下,会生成两个文件:id_rsa.pub和id_rsa。前者是你的公钥,后者是你的私钥。
拷贝公钥至远程服务器
[root@hadoop .ssh]# ssh-copy-id root@ip
在远程服务器上
第一次copy的时候需要输入密码
home/.ssh/目录下生成authorized_keys文件
再次连接远程服务器
[root@hadoop .ssh]# ssh ip
这次就不在需要登录密码了
原理图