一、原理
我们使用ssh-keygen在ServerA上生成私钥跟公钥,将生成的公钥拷贝到远程机器ServerB上后,就可以在ServerA上使用ssh命令无需密码登录到另外一台机器ServerB上。
生成公钥与私钥有两种加密方式,第一种是rsa(默认),还有一种是dsa,使用时两种方式随便选一种即可
/usr/bin/ssh-keygen -t [rsa | dsa]
如果直接执行ssh-keygen,那么默认采用rsa生成公钥跟私钥
二、具体实现:
A为本地主机(即用于控制其他主机的机器,jenkins服务器) ;
B为远程主机(即被控制的机器Server,jenkins运行之后发布项目的服务器), 假如A机器IP为210.101.202.100,B机器IP为201.100.101.203 ;
A和B的系统都是Linux
1、在B上的命令:
1、ssh-keygen -t rsa # 多按几个回车,也可以设置密码 ssh-keygen -t rsa -P '123456'
2、cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys (将id_rsa.pub的内容追加到 authorized_keys 中, 否则会清空原有的内容,使其他人无法使用原有的密钥登录)
3、chmod 600 ~/.ssh/authorized_keys (# 注意: 必须将~/.ssh/authorized_keys的权限改为600, 如果不设置,依旧会要求输入密码,该文件用于保存ssh客户端生成的公钥,可以修改服务器的ssh服务端配置文件/etc/ssh/sshd_config来指定其他文件名)
4、chmod 700 ~/.ssh (执行了第3步后,依旧需要输入密码,则执行此步骤)
2、在A(Jenkins所在机器)上的命令:
1、ssh-keygen -t rsa # 多按几个回车,也可以设置密码 ssh-keygen -t rsa -P '123456'
2、cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys (将id_rsa.pub的内容追加到 authorized_keys 中, 否则会清空原有的内容,使其他人无法使用原有的密钥登录)
3、ssh-copy-id -i ~/.ssh/id_rsa.pub web@201.100.101.203 -p15522 (需要输入密码)
4、ssh -p15522 web@201.100.101.203 (不需要密码, 登录成功)
以下是部分命令执行截图
[web@16-100-cos7-devtest1-s1 .ssh]$ ssh-copy-id web@201.100.101.203 -p15522
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
web@101.37.202.221's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh -p '15522' 'web@201.100.101.203'"
and check to make sure that only the key(s) you wanted were added.
[web@16-100-cos7-devtest1-s1 .ssh]$ ssh -p '15522' 'web@201.100.101.203'
Last login: Wed Dec 20 15:03:51 2017 from 180.168.184.178
###################################
############ NODEJS环境 ###########
###################################
#NODE.JS SERVER2 #
# #
#201.100.101.203(公) #
#192.168.10.1(内) #
# #
#目录结构: #
# #
#/u /业务目录 #
#├── applications /部署业务应用#
#├── backup /备份目录 #
#│ ├── applications #
#│ └── middlewares #
#├── data /业务数据目录#
#│ ├── mysql_data #
#│ ├── nginx_data #
#│ └── web_data #
#├── etc /配置管理 #
#│ ├── applications #
#│ └── middlewares #
#├── java /JDK #
#├── log /日志管理 #
#│ ├── mysql_log #
#│ ├── nginx_log #
#│ └── web_log #
#├── middlewares /部署中间键 #
#├── scripts /脚本目录 #
#└── src /源码包 #
# ├── applications #
# └── middlewares #
# #
# #
###################################
非root用户修改完后要重启sshd服务
service sshd restart