SSH免密登录的原理和使用
Manny

本文将介绍SSH免密登录(利用公钥登录)的原理和使用。

1. SSH简介

SSH,即(Secure Shell)。SSH协议使用加密来保证客户端和服务器端连接的安全。

SSH在用户认证中的使用,即SSH keys 。本文介绍其中一种认证方式——公钥登录。


2. 利用公钥登录的原理

  1. 客户端向服务器端发送连接请求,请求中携带了公钥指纹(fingerprint)

  2. 服务器端根据指纹判断在 authorized_keys 中寻找相应的公钥,若找到则加密一个随机字符串发送给客户端,客户端使用私钥进行解密并将结果发送给服务器端,服务器端进行结果验证,若解密结果与初始未加密随机字符串相同,则认证成功。


3. 利用公钥登录的使用

  • 首先删除原有的 .ssh 目录:

Windows系统 .ssh 位于C:\Users\Administrator\.ssh ,直接删除即可。

Linux系统:

1
2
cd ~ ##进入当前用户
rm -r .ssh/ ##删除
  • 利用 ssh-keygen 生产密钥对

参考文档如下:
https://www.ssh.com/academy/ssh/keygen

1
2
3
4
5
ssh-keygen
##optional
# -t 选择加密算法,默认使用RSA加密算法
# -c "Comment" Changes the comment for a keyfile.
# 其他参数请查看参考文档

一直按enter就行,最终生成私钥 id_rsa 、公钥 id_rsa.pub

image

  • Github使用SSH Keys免密登录。

在GitHub账户 Settings||SSH and GPG keys 中新建一个SSH key,将公钥 id_rsa.pub. 中的内容复制到其中。

之后,在进行push等操作时就可以跳过身份认证直接进行操作了。


此外,SSH keys还可用于其他地方,如Xshell免密登录远程服务器。除了用户认证外,SSH也广泛的应用于数据加密等。

 评论