ssh私钥和公钥

pre

要连接到一个服务器

两个级别的安全验证

  • 基于口令(密码)
  • 基于密钥

之前一直使用密码登陆,因为xshel会帮你记住一切参数,而且ios,安卓也可以简单的登陆,但切换到ubuntu就没有那么方便,需要配置ssh。

但说实话,基于密钥的登陆方法才比较安全,比主流的。

knowledge

公钥和私钥

  • 公钥: 公开的密钥,所有人都可以知道
  • 私钥: 私有的密钥,只有自己知道

关系:

1. 公钥和私钥是成对的,它们互相解密。
2. 公钥加密,私钥解密。 
3. 私钥数字签名,公钥验证。

流程:

消息-–>[公钥]-–>加密后的信息-–>[私钥]-–>消息

结论

所以简单来说你需要让服务器知道你的公钥才能让它发出用你公钥加密的信息,看你能不能用自己的私钥解密,来判断你能不能登陆。

practise

pre

综上所述,我们要做的很简单。

  1. 生成客户端的公钥和私钥。
  2. 把客户的公钥上传你的服务器。

代码

生成密钥

ssh-keygen -t rsa -C "你的邮箱"

之后全按enter

发送秘钥

上一条命令运行过程中会告诉你秘钥的位置
不出意外的话,密钥的位置在

  • ~/.ssh/id_rsa (私钥)
  • ~/.ssh/id_rsa.pub (公钥)

我们需要发送公钥到远程主机

ssh-copy-id -i ~/.ssh/id_rsa.pub  用户名@服务器地址(ip或者域名)

注:若是你自己改过默认端口22,则加参数-p xxxx

简来来说,若登陆命令是ssh xx,则上传命令是 ssh-copy-id -i ~/.ssh/id_rsa.pub xx 。

-------------本文结束-------------