通过ssh免密操作,把公钥拷贝到远程服务器中,可以实现以下几种情况
# 情况一:可以免密登录到远程服务器
ssh 用户名@IP
# 情况二:拷贝文件到远程服务器
scp 本地文件路径 用户名@IP:远程文件的路径
# 情况三:执行远程服务器的脚本
ssh 用户名@IP "sh 脚本的绝对路径"
问题描述:
在频繁的登录和拷贝文件到远程服务器的使用,我们就可以配置这样的ssh免密操作。比如Jenkins的持续部署,我们需要把拉取下来的项目拷贝到远程服务器中,并且去执行远程服务器的启动项目脚本来发布项目。
一、生成密钥
1.执行命令,这里一直回车直到结束
ssh-keygen
2.查看用户下的.ssh文件夹。如果是root用户,则在/root目录下,其他用户则在/home/用户名/。这里我是用test用户来生成密钥,所以进入/home/test查看
cd /home/test
3.执行ls -a,查看用户下的文件夹,可以看到,是有.ssh文件夹的
4.查看.ssh下的文件夹
- id_rsa : 私钥文件
- id_rsa.pub : 公钥文件
二、配置免密方式
这里拷贝公钥到要免密登录的服务器B中
1.通过命令ssh-copy-id(第一次执行需要密码验证)
ssh-copy-id 远程服务器用户名:IP
2.手动将公钥拷贝到远程服务器中
# 首先查看远程服务器的.ssh文件夹有没有文件authorized_keys。如果没有则创建,再拷贝。如果有则直接复制
# authorized_keys:当主机远程连接该服务器时,就会把主机的公钥记录在该文件中(生成密钥时是没有该文件的)
touch 远程服务器用户目录/.ssh/authorized_keys
至此,就可以去免密登录、拷贝文件、执行脚本等命令啦
第一次写这个,如果写得不好,请见谅。也请多多指教^ _ ^。如果有跟你相似的地方,请私聊我,我马上删除或标注出处。