Linux免密登录(SSH)

管理多台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

免密登录

免密登录原理

通过 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

通过Ansible实现批量免密

将需要免密操作的主机host添加到/etc/ansible/hosts下:

[Avoid close]
172.17.1.1
172.17.1.2
172.17.1.3
172.17.1.4

执行命令进行免密操作

命令:    
ansible <groupname> -m authorized_key -a "user=root key='{{lookup('file','/root/.ssh/id_rsa.pub')}}'" -k

示例:
# ansible test -m authorized_key -a "user=root key='{{ lookup('file','/root/.ssh/id_rsa.pub') }}'" -k

通过 Cat方法

cat ~/.ssh/id_rsa.pub | ssh -p 22 user@host ‘cat >> ~/.ssh/authorized_keys’    

文章引用

linux 免密码登录: http://www.jb51.net/article/94599.htm


本文结束
生产不易,搬运不易,如果对您有帮助,请打赏一下下。