灵感(心德)是来源于在:设定服务器和远程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
步骤:
- windows用户生成密钥,命令行执行如下命令,基本可以一直回车,生成的ssh密钥会在用户文件夹下的
.ssh
目录:
# 当然还可以设定密码,名字等
ssh-keygen -t rsa -C "your_email@type.com"
如果不规定名字默认是如下:
id_rsa 该用户私钥
id_rsa.pub 该用户公钥
- 登陆119服务器(先用密码,此时不能免密),要设定哪个用户(user)免密登陆,就去到该用户
.ssh
目录下:
cd /home/user/.ssh
找到(或者创建)authorized_keys
文件,然后,把window
上产生的id_rsa.pub
里面的内容拷贝到authorized_keys
中
- 在window登陆时候,就可以使用命令
ssh -i path/id_ras user@119.12.34.56
意思就是使用配置的ssh密钥的私钥去登陆119.12.34.56的user用户,因为配置了公钥,可以成功。
可以形象的理解成,私钥是钥匙,公钥是锁。
网友评论