前提由于线上服务器过多,进而服务器上设置的账户密码也多得记不过来,公司开发,测试,运维的同学都需要到线上进行代码或者系统的维护又或者其他工作,牵扯到线上服务器的安全性,全面将服务器明文密码收归运维所有,需要登录服务器的同学都必须使用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