关于ssh的密钥问题

2019-06-06  本文已影响0人  某言

灵感(心德)是来源于在:设定服务器和远程git仓库的数据联通、设定jenkins服务传送文件过程中。只要了解了这个本质问题,其他的一些,尽然迎刃而解。


经历

一、在jenkins需要自动化获取仓库代码时候,代码托管平台一般需要认证,这个时候,需求是需要无密码拉取,这时候,通信的方式是ssh,代码托管平台一般就会要求添加ssh公钥,这时候,搭配上服务器的私钥,通
过认证,即可免密通信。
二、jenkins需要将文件打包传送到另一个服务器,两个服务器之间要免密通过ssh通信。在每个服务器的特定用户(比如root)的用户文件夹下面(/home/root/),有一个目录.ssh,里面有着相关的文件来达成这个目的。一般该目录下有如下文件:

authorized_keys  别的服务器的公钥,如此,别的服务器登录该服务器不用密码
id_rsa  该用户私钥
id_rsa.pub  该用户公钥
known_hosts

感悟

要登录一个服务器(的用户、jenkins、git等的验证),实际上原理都是私钥配公钥来达成认证,一对密钥是一个验证方式,一个用户,对于多个平台可以有多个ssh秘钥,私钥公钥都要存在,可改名字存储。


实践

目的:用我windows免密登录服务器:119.12.34.56
步骤:

# 当然还可以设定密码,名字等
ssh-keygen -t rsa -C "your_email@type.com"  

如果不规定名字默认是如下:

id_rsa  该用户私钥
id_rsa.pub  该用户公钥
cd /home/user/.ssh

找到(或者创建)authorized_keys文件,然后,把window上产生的id_rsa.pub里面的内容拷贝到authorized_keys

ssh -i path/id_ras user@119.12.34.56

意思就是使用配置的ssh密钥的私钥去登陆119.12.34.56的user用户,因为配置了公钥,可以成功。

可以形象的理解成,私钥是钥匙,公钥是锁。

上一篇 下一篇

猜你喜欢

热点阅读