管理多台Linux服务器,每台单独登录,很是麻烦,后来发现可以通过ssh实现免密登录,查找资料,整理如下:
一、 Linux下生成密钥
使用 ssh-keygen
生成密钥文件
#以主机名为名称生成密钥,多用于主机免密登录。
# ssh-keygen -t rsa
#以邮箱账号生成密钥,多用于git、svn等代码管理
# ssh-keygen -t rsa -C "aa@bb.com"
密钥生成路径
~/.ssh #用户根目录下的.ssh目录
会自动生成
authorized_keys # 远程主机的公钥文件,对方主机登录本机的公钥,如果没有可以自行建立。
id_rsa # 本地主机私钥
id_rsa.pub # 本地主机的公钥,这个将会放置于要登录的远程主机的authorized_keys文件内
know_hosts # 主机指纹
.ssh目录的权限是 700
.ssh/authorized_keys 文件的权限是 600
二、 免密登录
免密登录原理
2.1 通过 ssh-copy-id 方式传输公钥
命令: ssh-copy-id -i ~/.ssh/id_rsa.pub *.*.*.*
# *为远程主机IP
ssh-copy-id -i ~/.ssh/id_rsa.pub 172.17.1.31
如果命令执行错误,提示命令不存在,则是没有安装程序,执行:
yum install openssh-clients
2.2 通过Ansible实现批量免密
2.2.1 添加主机列表
将需要免密操作的主机host添加到/etc/ansible/hosts下
[Avoid close]
172.17.1.1
172.17.1.2
172.17.1.3
172.17.1.4
2.2.2 执行命令进行免密操作
命令:
ansible <groupname> -m authorized_key -a "user=root key='{{lookup('file','/root/.sshid_rsa.pub')}}'" -k
示例:
ansible test -m authorized_key -a "user=root key='{{ lookup('file','/root/.ssh/id_rsa.pub') }}'" -k
2.3 通过 Cat方法
cat ~/.ssh/id_rsa.pub | ssh -p 22 user@host ‘cat >> ~/.ssh/authorized_keys’
三、 文章引用
linux 免密码登录: http://www.jb51.net/article/94599.htm
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 long@longger.xin