Skip to main content

linux-ssh

·131 words·1 min
😈long && 😻liang
Author
😈long && 😻liang
A IT worker with PHP/GO as the main technology stack
linux-server-setup - This article is part of a series.
Part 1: This Article

ssh-keygen
#


常用命令:

ssh-keygen -t ed25519 -b 2048 -C [email protected] -f ~/.ssh/id_ed25519 -N "password" -q

-t生成密钥的类型

ssh-keygen -t rsa | ecdsa | ed25519 | rsa
  1. rsarsa加密算法。(默认)
  2. ecdsa椭圆曲线加密算法。
  3. ed25519ed25519加密算法。(保密性最高)
  4. rsarsa加密算法。

-b生成密钥的大小(单位:字节)

ssh-keygen -b 2048

-C生成密钥的描述信息,一般为邮箱地址

ssh-keygen -C [email protected]

-f生成文件的路径,默认路径为~/.ssh/id_rsa/xx

ssh-keygen -f ~/.ssh/id_rsa

-N生成解析密钥的密码

ssh-keygen -N "password"

-q生成密钥时不显示任何信息

ssh-keygen -q

ssh逻辑
#


ssh+password实现登陆
#

  1. 客户端连接上服务器,服务器把公钥发给客户端
  2. 客户端用服务器公钥加密,上传密码
  3. 服务器用私钥解密,如果匹配,则连接成功
  4. 服务器持有私钥,客户端持有公钥。
sequenceDiagram autonumber participant s as 服务器(持有私钥) participant c as 客户端(持有公钥) rect rgb(199, 237, 204) s-->>c: 发送公钥 activate c c-->>s: 上传用公钥加密的密码 deactivate c s-->>c: 匹配密码,建立连接 end

ssh实现登陆(git等)
#

  1. 服务器发送一段随机字符串,并使用公钥加密
  2. 客户端使用私钥解密,并返回解密后的信息
  3. 服务器进行信息对比,如果验证成功,则允许连接
  4. 服务器持有公钥,客户端持有私钥。
sequenceDiagram autonumber participant s as 服务器(持有公钥) participant c as 客户端(持有私钥) rect rgb(199, 237, 204) s-->>c: 发送用公钥加密的随机字符串 activate c c-->>s: 发送私钥解密后的随机字符串 deactivate c s-->>c: 随机字符串匹配,建立连接 end

利用ssh实现登陆linux服务器
#

  1. 通过ssh-keygen生成密钥对
  2. 将公钥文件(xx.pub)中的内容拷贝至服务器的~/.ssh/authorized_keys文件中(另起一行)
  3. 将私钥文件添加到客户端的ssh-agent中。
ssh-agent bash
ssh-add <私钥位置>
ssh <用户名>@<地址>

常见问题
#


因为修改了私钥默认名称或者默认路径,系统无法找到私钥
#

解决方案如下:
~/.ssh/config文件中添加如下内容:

IdentityFile <私钥路径>
linux-server-setup - This article is part of a series.
Part 1: This Article