一、认证原理
1.输入密码(口令)验证
用户在客户端ssh远程服务器,远程服务器将自己的公用密钥下发至客户端的~/.ssh/known_hosts ,也就是我们连接一台新服务器时的会输入 yes 的过程,客户端将使用该公开密钥来加密数据,远程服务器使用自己的私有密钥来解密数据,从而实现加密访问过程。
2. 免密登录(秘钥)验证
首先在客户端创建一对密匙,手动把公钥放在远程服务器的可信任列表中 cd ~/.ssh/authorized_keys。
当客户端SSH连接服务器时,客户端携带着公钥向服务器发出链接请求,远端服务器收到请求后,在 ~/.ssh/authorized_keys信任文件里比对该公钥是否存在,如果对比成功,远端服务器则使用该公钥加密一个随机字符串(challenge),然后发送给客户端。客户端接收到该服务器回来的请求后,将随机字符串(challenge)用自己的私钥进行解密,之后再将解密后的结果传给远端服务器,远端服务器对比传来的字符串是否一致,一致则建立连接。
对称加密和非对称加密的结合,使得通信安全和效率上大大的提高。
1 . 对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方。
2. 非对称加密指使用一对非对称密钥,即:公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。
由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性。但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。
二、ssh 免密配置
1. 在本地生成公私密钥 (/home/username/.ssh/)
ssh-keygen -t rsa
2. 将本地的公钥上传到远程服务器的用户信任列表
scp id_rsa.pub username@192.168.*.*:/home/username/.ssh/
3. 检查远程服务器可信任列表
cd ~/.ssh/
cat id_rsa.pub >> authorized_keys
4. 免密登录
ssh username@192.168.*.*
5. Windows 还需配置一个 config 文件
# 进入.ssh
cd ~/.ssh/
# 新建config
vim config
# 添加以下内容
Host usa_server
HostName 192.168.*.*
User user
Port 22
IdentityFile "C:\Users\username\.ssh\id_rsa"
# 保存
# ssh别名链接验证
ssh usa_server
参考链接: