什么是ssh
SSH(远程连接工具)
连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息。
ssh服务端由2部分组成: openssh(提供ssh服务) openssl(提供加密的程序)
Client端如何保证接受到的公钥就是目标Server端的?
- 1.Client将自己的公钥存放在Server上,追加在文件authorized_keys中。
- 2.Server端接收到Client的连接请求后,会在authorized_keys中匹配到Client的公钥pubKey,并生成随机数R,用Client的公钥对该随机数进行加密得到pubKey(R)
,然后将加密后信息发送给Client。 - 3.Client端通过私钥进行解密得到随机数R,然后对随机数R和本次会话的SessionKey利用MD5生成摘要Digest1,发送给Server端。
- 4.Server端会也会对R和SessionKey利用同样摘要算法生成Digest2。
- 5.Server端会最后比较Digest1和Digest2是否相同,完成认证过程。
生成 ssh key
ssh-keygen -t ed25519 -C "giteeshhkey_01"
选项参数解释
-
-C comment Provides a new comment.
-
-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa
配置多账号
打开 config 文件, 并编辑
vi ~/.ssh/config
配置了 github 和 gitee 两个 host, 配置格式见下图
⚠️注意 IdentityFile 的路径
以 gitee为例 在网站中添加公钥
cat ~/.ssh/gitee/id_ed25519.pub
复制
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEg2fYrtDKg1qCR+/mGALiehTxZcAix46kFTAWAUMXT3 giteeshhkey_01
验证是否添加成功
ssh git@gitee.com