多密钥ssh-key生成与管理
由于 git 大文件用 http 方式难以传输,必须使用 ssh-key,而 ssh-key 又生成了好多个。最近在各种折腾 ssh,公钥私钥上花费了很多时间,现将一些问题总结如下。系统为 Mac/Linux。
密钥的原理
SSH之所以能够保证安全,原因在于它采用了公钥加密。
整个ssh密码登录过程是这样的:
- 用户向远程主机发登录请求:ssh user@远程主机
- 远程主机收到用户的登录请求,把自己的公钥发给用户。
- 用户使用这个公钥,将登录密码加密后,发送回远程主机。
- 远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。
在linux上,如果你是第一次登录对方主机,系统会出现下面的提示:
$ ssh user@host
The authenticity of host 'host (12.18.429.21)' can't be established.
RSA key fingerprint is 98:2e:d7:e0:de9f:ac:67:28:c2:42:2d:37:16:58:4d.
Are you sure you want to continue connecting (yes/no)?
这段话的意思是,无法确认host主机的真实性,只知道它的公钥指纹,问你还想继续连接吗?
所谓"公钥指纹",是指公钥长度较长(这里采用RSA算法,长达1024位),很难比对,所以对其进行MD5计算,将它变成一个128位的指纹。上例中是98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d
,再进行比较,就容易多了。
很自然的一个问题就是,用户怎么知道远程主机的公钥指纹应该是多少?回答是没有好办法,远程主机必须在自己的网站上贴出公钥指纹,以便用户自行核对。
假定经过风险衡量以后,用户决定接受这个远程主机的公钥。
Are you sure you want to continue connecting (yes/no)? yes
系统会出现一句提示,表示host主机已经得到认可。
Warning: Permanently added 'host,12.18.429.21' (RSA) to the list of known hosts.
然后,会要求输入密码。
Password: (enter password)
如果密码正确,就可以登录了。
原文:http://itindex.net/detail/48724-ssh-认证-原理
密钥的生成和管理
密钥的生成
在命令行中,键入
ssh-keygen -t rsa -C "$your_email"
会生成一对密钥,默认的情况下,私钥将放在~/.ssh/id_rsa
,对应的公钥则为~/.ssh/id_rsa.pub
。
在生成的过程中,会询问你放密钥的位置。由于每个人可能不止需要一个密钥,所以可以另存为其他名字的密钥,比如path/to/your/dir/id_rsa_new
,此时它也将生成对应的公钥。
使用以下代码来查看生成的公钥
cat ~/.ssh/id_rsa.pub
将公钥复制到你需要的服务器上(比如 github,gitlab 等等)
密钥的管理
如前文所说,如果我们需要多个密钥,那么在使用中,如何确定实际使用哪一个呢?
目前为止,ssh-key 用得最多的两个 地方,一是 git 相关服务,二是远程连接服务器。
命令输入
用-i
指定私钥,-p
指定端口,连接服务器
ssh -i path/to/your/key developer@192.168.1.237 -p 23
scp -i path/to/your/key filename developer@192.168.1.237:/diskpath
配置 ~/.ssh/config 文件
由于 git 命令不能指定私钥,所以要通过 ~/.ssh/config 文件来控制。如果没有就在~/.ssh目录创建config文件,该文件用于配置私钥对应的服务器。比如:
Host github
HostName github.com
User git
IdentityFile ~/.ssh/id_rsaHost tsinghua
HostName tsinghua.edu.cn
User git
IdentityFile ~/.ssh/id_rsa_new
这样,链接到 github.com 时,使用的就是 id_rsa;链接到 tsinghua.edu.cn 时,使用 id_rsa_new。另外,Host 的名字可以随便设置,并且在 ssh 后面相当于 User@HostName,比如 ssh github
等价于 ssh git@github.com
。
私钥密码修改
如果工作中,你使用了一个没有密码的私钥,有一天服务器被黑了,你是跳到黄河都洗不清。而生成密钥时,往往会选择一个比较简单的密码。为了安全起见,还是应该修改一下:利用ssh-keygen -p
,系统会提示选择需要修改的私钥,默认是~/.ssh/id_rsa
,选好文件后按回车,会提示你输入旧密码,输入好后会提示输入新密码,则修改完成。
转载于:https://www.cnblogs.com/sunlightsgy/p/6679473.html
多密钥ssh-key生成与管理相关推荐
- Git SSH Key 生成并添加到github/gitee步骤
Git SSH Key 生成并添加到github/gitee步骤 在本地生成密钥 大家好,这里是坚果前端小课堂,欢迎大家关注我的公众号,"坚果前端" Git是分布式的代码管理工具, ...
- Git SSH Key生成,配置到GitHub 并测试
//本环境为os下 //首先是查看本机安装git版本 yangliu$ git --version git version 2.17.0 //git目录 yangliu$ which git /usr ...
- Git 中 SSH key 生成步骤
由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以必须要让github仓库认证你SSH key,在此之前,必须要生成SSH key. 第1步:创建SSH Key.在windows下 ...
- ssh key生成_Stelnet(ssh)登陆华为交换机配置教程
使用STelnet V1协议存在安全风险,建议使用STelnet V2登录设备. 1.生成本地密钥对 密钥保存在交换机中单不保存在配置文件中 [Huawei]rsa ? key-pair RSA ke ...
- git ssh key生成
重装系统后,需要重新安装git,ssh key便是遇到的其中一个问题,具体解决办法如下: 1.安装好git客户端后,查看本地是否有.ssh文件,命令如下: mkdir ~/.ssh 2.如果没有该文件 ...
- Git SSH Key 生成步骤
Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置. github的SSH配置如下: 一 . 设置Git的user name和email: $ git ...
- 【Git】SSH Key 生成
GIT 是分布式的代码管理工具,远程的代码管理基于 SSH,因此当远程使用GIT 时需要配置 SSH,但是我经常会忘记哈哈
- 多个ssh key 和 config 配置
ssh config 管理多个key 1,多个ssh key 生成 2,ssh -i 选择私钥登陆 3,配置config 1,多个ssh key 生成 $ ssh-keygen -f gcp # -f ...
- Mac环境配置SSH Key
文章目录 1.查看本地是否存在SSH Key 2.生成SSH Key 生成:ssh-keygen -t rsa -C "emAIl@xxx.com" 添加:ssh-add ~/.s ...
- Git如何生成多个ssh key添加到ssh-agent管理项目
Git如何生成多个ssh key添加到ssh-agent管理项目 生成新的ssh密钥 ssh-keygen -t rsa -b 4096 -C "your@example.com" ...
最新文章
- 8.2 matlab曲线对象和曲面对象(曲线对象、曲面对象、光照处理、图形对象的反射特性)
- Git 常用命令总结,掌握这些,轻松驾驭版本管理
- ZooKeeper Java示例
- kindeditor 限制上传图片大小及宽高
- 62. 不同路径(JavaScript)
- 计算机网络cr什么意思,网络用语cr是什么意思
- [CTO札记]社区领域模型-SRC抽象模型
- 交通灯keil程序加2位数码管_十字路口交通灯控制Keil编写
- 自己做量化交易软件(28)小白量化实战2--变红买入变绿卖出
- 搜狗浏览器收藏夹误删恢复
- pe制作linux硬盘的镜像文件_用WindowsPE制作的启动U盘或移动硬盘安装cent os 6.2
- emeditor的快捷键
- 网站PC端与wap端适配
- 盛世昊通董车长2.0,拼车车运营模式解读
- python笔记05: 程序结构
- 定位猫显示连接服务器失败,定位猫为什么不能用了,该怎么解决?看这里解决。...
- 激光切割机的原理是什么?(激光切割机的结构是什么样的)
- 假期自学编程没有学习路线?
- 关于retina视网膜显示的知识总结
- PTA 补充题库 7-19 评委打分
热门文章
- linux重启memcache_linux下启动和停止memcached
- 黑洞效果的粒子背景效果
- 大神教你Nginx常用基础配置方案
- 分布问题(二元,多元变量分布,Beta,Dir)
- 领酌酒业:一文阅尽酱香酒
- 'Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set.
- maven项目乱码以及项目名出现红叉
- 分布式搜索elasticsearch 索引文档的增删改查 入门
- zookeeper之系列五:简单操作
- Hibernate POJO在序列化(JSON)时遇到的若干问题