前提:由于线上服务器过多,进而服务器上设置的账户密码也多得记不过来,公司开发,测试,运维的同学都需要到线上进行代码或者系统的维护又或者其他工作,牵扯到线上服务器的安全性,全面将服务器明文密码收归运维所有,需要登录服务器的同学都必须使用ssh登录,进而提高线上服务器的安全性。
系统配置:centos6.5 64bit
服务器01:192.168.1.20
服务器02:192.168.1.21
生成私钥以及公钥 :
在服务器01上执行:ssh-keygen -t rsa -b 4096 ;然后敲三次回车就可以生成私钥以及公钥,文件生成在/root/.ssh目录下,文件分别为id_rsa.pub、id_rsa两个文件。
#/root/.ssh这个账户可以是你们需要ssh登录的账户,可以是自己的用户名又或者是worker。
#-t 指定要创建的密钥类型。可以使用:"rsa1"(SSH-1) "rsa"(SSH-2) "dsa"(SSH-2)
#指定密钥长度。对于RSA密钥,最小要求768位,默认是2048位。DSA密钥必须恰好是1024位(FIPS 186-2 标准的要求)。
然后将id_rsa.pub文件拷贝到服务器02上面的对应用户的.ssh目录下
#生成后需要对.ssh文件夹以及id_rsa.pub、id_rsa文件进行权限修改
#.ssh目录修改为600 chmod 600 .ssh
#id_rsa.pub、id_rsa文件修改为700 chmod id_rsa.pub、id_rsa
将id_rsa.pub该文件scp到服务器02上去,scp -p22 192.168.1.21:/root/.ssh
如果服务器02上面没有.ssh目录就进行手动创建一下mkdir .ssh;进行权限修改,然后将id_rsa.pub文件名修改为authorized_keys
测试ssh无密码登录
ssh 192.168.1.21
ps如果ssh操作失败有多方面的原因
一、selinux的配置问题,关闭selinux
vim /etc/selinux/config
SELINUX=disabled
重启服务器
二、iptables的配置问题,关闭防火墙或者添加IP过滤规则
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT