SSH免密码登录配置教程
一、使用sshpass命令来传递密码
1、修改管理端SSH配置文件/etc/ssh/ssh_config,将SSH远程其它主机需要手动输入yes来进行认证的功能关闭掉,也可以在使用ssh连接的时候使用-o选项指定
StrictHostKeyChecking no
ssh -o StrictHostKeyChecking=no root@192.168.1.100
2、安装sshpass,并使用它来传递密码,也可以通过sshpass结合ssh-copy-id实现批量传输公钥
yum install sshpass -y
sshpass -p "yourpassword" ssh 192.168.1.100
sshpass -p "password" ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.0.101
二、使用秘钥实现免密码登录
实验环境准备了三台服务器,生产环境中可以几十上百台:
A:192.168.36.10(用于分发文件服务器)
B:192.168.36.15(接收分发文件服务器)
C:192.168.36.16(接收分发文件服务器)
1、使用ssh-keygen命令创建密钥对
ssh-keygen -t rsa #除了rsa还有dsa格式,rsa可以实现加密认证也可以进行签名认证,dsa只能用于签名认证
# ssh-keygen -P "" -f ~/.ssh/id_rsa #大写的P是密码,-f是私钥存放路径,实现非交互创建秘钥
2、执行命令后根据提示输入密钥的密码和存放路径,通常直接回车即可。命令执行完成后在用户家目录中生成了公钥(/root/.ssh/id_rsa.pub)和私钥(/root/.ssh/id_rsa)。公钥需要放在每台被远程的机器上,也就是说“谁要访问某服务器,谁就把公钥给某服务器”。在某些云平台上通常是将公钥传输给远端机器后,在平台上把私钥内容写进去,实现通过界面管理服务器。
3、进入用户家目录查看密钥文件,确认私钥权限为600,公钥为644,而.ssh目录权限是700
4、利用ssh-copy-id命令推送公钥文件到以后需要分发文件的服务器(把公钥传给需要做免密钥登陆的机器不管是本地电脑还是服务器,都可以实现免密钥登陆)
# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.36.15 #命令完整写法
ssh-copy-id 192.168.36.15 #简写
sshpass -p 'yourpass' ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.36.15 #结合sshpass还可以实现免密分发公钥
5、命令执行后在分发服务器的对应用户家目录中会生成.ssh目录,并且该目录下还有一个authorized_keys文件,这个是被自动改名的公钥文件,因为在sshd_config文件中指明了公钥文件的名字。所以直接复制公钥文件中的内容到该文件中也是可以实现ssh-copy-id这个命令的效果
6、在A服务器上执行ssh命令连接B、C服务器,正常的话已经不需要输入密码可以直接登录了,利用这一特性,可以用一些脚本实现查看多台服务器的内存信息等,如下图就是在192.168.36.15服务器上通过SSH查看192.168.36.16的IP信息且不需要输入密码
7、在A服务器使用scp命令进行分发文件测试,需要注意的是分发服务器和接收服务器都需要安装对应的命令,下图创建了三个测试文件,成功通过scp推送过去并不输入密码
评论