在CRM+的上线过程中,由于涉及到上千个域的文件同步、命令发送等,又考虑到有安全隐患,所以设置了一个堡垒机。
通过ssh的双端认证后(我们只做了单端),可以通过堡垒机免密登录其他上千台Linux机器中,进行执行命令同步文件等。个人感觉还是有一定用途的,分享一下操作步骤。
一、概述:
双端认证(互信)的概念:就是为了让两个linux机器之间使用ssh跳转不需要用户名和密码。采用了数字签名RSA或者DSA来完成这个操作,加密方式选 rsadsa均可以,默认dsa。
二、Linux-ssh双端认证操作步骤:
如果机器上没有安装SSH,需要先进行安装,执行如下命令。
centos:yum -y install ssh
ubuntu:sudo apt-get install openssh-server
登录机器A
机器A上执行命令:ssh-keygen -t [rsadsa] -P '',将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub
-t表示key的类型,rsa表示key类型 -P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三次回车,用-P就一次回车。运行完之后在/home/comodo/.ssh目录下生成私钥id_rsa和公钥id_rsa.pub。对这个目录说明,是什么用户执行就在什么用户下,如果是crmsca1,那么就是/data/crm/crmsca1/.ssh目录下。
将PC_A主机下的公钥id_rsa.pub复制到PC_B机下
scp id_rsa.pub root@172.0.1.140:/home/comodo/id_rsa.pub
将PC_B主机上的公钥添加到/home/comodo/.ssh/authorzied_keys之中
cat id_rsa.pub >> /home/comodo/.ssh/authorized_keys
chmod 600 /home/comodo/.ssh/authorized_keys 和 chmod 700 -R .ssh
PC_A机登录PC_B机 ssh 172.0.1.140
在.ssh这个目录下,会生成一个known_hosts文件,不用管他,这个是第一次登录这个机器会输入yes/no那种提示信息生成的。
如果想实现双端认证,只需要在机器B上生成公钥,然后重复上述4-9操作即可。
三、总结和补充:
文件和目录的权限千万别设置成chmod 777.这个权限太大了,不安全,数字签名也不支持。如果文件权限中,除owner权限外还有w权限,这时双端认证就会失败。
生成的rsa/dsa签名的公钥是给对方机器使用的。这个公钥内容还要拷贝到authorized_keys
ssh 会把每个你访问过的计算机的公钥(public key)都记录到~/.ssh/known_hosts文件中,当你下次访问该计算机时,openss会核对公钥。如果公钥不同,那openssh就会发出警告,避免你收到DNSHijack等攻击。
补充:
jenkins master和slave通信的方式:
将master的public key拷贝到slave的~/.ssh/authorized_keys中,将slave 的 private key 保存到master上某ppk文件中。
jenkins将会自动地完成其他的配置工作,例如copy slave agent的binary,启动和停止slave。
一个简单的Linux-ssh技巧,欢迎分享讨论。
今晚写这个的时候,心情很复杂,内心的波涛汹涌,外界的鸡毛蒜皮。
分享技术
享受生活
一方素笺丶萦思念
领取专属 10元无门槛券
私享最新 技术干货