首先我们要了解一下什么是ssh --> secure shell --> 安全外壳协议:用一个壳将里面的数据包裹起来进行加密 。
SSH为建立在应用层基础上的安全协议,SSH是比较可靠,专为远程登录会话和其他网络服务提供安全性的协议。主要在Linux Uni HP-UX等上面使用。
ssh服务的端口:22 tcp 公钥技术(非对称加密)
ssh是基于公钥加密(非对称加密)技术
1.数据加密传输
2.客户端和服务器的身份验证
公钥和私钥是成对生成的
密钥的两个用途: 1.数据加密
2.数字签名:身份识别 证明
一、准备两台虚拟机,一台做服务器,一台做客户端
我这里客户端Aip为192.168.0.104:22
服务器B为 192.168.0.57:22
下面是在客户端生成公私钥
root@localhost ~]# cd /etc/ssh
[root@localhost ssh]# ls
moduli ssh_host_ecdsa_key ssh_host_ed25519_key.pub
ssh_config ssh_host_ecdsa_key.pub
sshd_config ssh_host_ed25519_key
# ssh_host_ecdsa_key 私钥 ssh_host_ecdsa_key.pub 公钥
二、将公钥发送给B服务器
查看生成的公钥密文
# -p可以指定端口号 192.168.0.57为B服务器ip
[root@localhost .ssh]# ssh-copy-id -i id_ecdsa.pub [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_ecdsa.pub"
/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
[email protected]'s password:
#输入B服务器密码
三、免密登陆
直接登陆不需要密码则成功免密登陆了
# -p指定端口号
[root@localhost .ssh]# ssh 192.168.0.57
Last failed login: Mon Jul 13 17:07:52 CST 2020 from 192.168.0.57 on ssh:notty
There were 4 failed login attempts since the last successful login.
Last login: Mon Jul 13 17:02:38 2020 from 192.168.0.104
如果没有成功免密登陆可以查看传送的公钥有没有传输错误
[root@localhost .ssh]# cat id_ecdsa.pub
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMFEwpVa3pS/ornaE8JJkEeLr/UE0ImHeJF+T5Moh2tpuDxA7crPuSQ8s1tqZ/bQ9OvMom1H/vI7OOQ+znjCNQA= [email protected]
对比一下A客户端的密文是否一致
(将客户端和服务器操作转换再次建立可以建立双向信任)