在互联网应用当中主要用途:
1.主要是为账号安全性
2.项目发布---当jenkins进行编译生成jar文件或者其他文件,通过免密登录将文件远程传输到项目发布服务器上,并通过执行脚本命令实现服务发布(小知识点---传统脚本存放做法是放在目标项目发布服务器上,为了方便管理可以实现将脚本服务放在jenkins这台服务器上,方便管理)
说明:目前该项目部署为传统做法,先目前流行用docker容器来做
准备:(假设当前用户是root)
服务器A:jenkins所在的服务器---请求方
服务器B:项目所在的服务器
1、首先进入服务A的 /root/.ssh 目录下,查看有没有已经生成好的公钥和私钥.
如果没有,生成一个公钥
ssh-keygen -t rsa
之后控制台会提示你,输入SSH key 的文件名和密码,直接回车即可。使用默认的文件名和没有密码
再次进入 /root/.ssh 目录下就有三个文件,id_rsa 为私钥,id_rsa.pub为公钥
2、把服务器A中生成 id_ras.pub 里边的内容拷贝到服务器B中的 ~/.ssh/authorized_keys 文件中(一般没有此文件,需要自己创建一下)
/root/.ssh 目录下执行下面这个命令
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.235.22 此命令就可以自动copy到目标服务器,把自己的公钥拷给对方,注意第一次需要输入该服务器的密码
此时你会发现B服务器上已经有A服务器的公钥了
3、在B服务器上修改ssh配置文件
在/etc/ssh找到sshd_config
vi sshd_config
// 打开注释
// RSAAuthentication yes
// PubkeyAuthentication yes
// PermitRootLogin yes root用户是否可以通过ssh登录 默认yes ,这个无需修改
PasswordAuthentication yes 是否可以密码登录服务器。默认yes ,这个无需修改
保存后重新重启ssh
service sshd restart
有时候发现ssh用命令重启无效,可采用在阿里云后台进行对该服务器重启
4、在A服务器上进行ssh免登陆到B服务器上
ssh root@192.00.xxx.xxx
上面的图说明你已经连接成功了。如果没有连接成功或者要输入密码可以重启阿里云服务器
输入exit; 退出服务器
linux实战操作如下地址:
https://m.jb51.net/article/94599.htm
重点:如果通过ssh操作远程服务器执行简单操作,可以如下:
ssh root@47.88.78.98 "cd /usr/local ; ls"
基本能完成常用的对于远程节点的管理了,几个注意的点:
- 双引号,必须有。如果不加双引号,第二个ls命令在本地执行
- 分号,两个命令之间用分号隔开
- 多行命令可以输入双引号后回车,结尾使用双引号包裹
例如:当jenkins来构建前端Vue服务,构建完成后将文件打包到远程服务器上并解压覆盖操作,就需要用到这个
ssh root@47.88.78.98 "cd /usr/local/web_project ; unzip -o 2004301847.zip"