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

文件权限

二、 免密登录

免密登录原理

文件权限

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

通过ssh-copy-id传输公钥

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

文章标题:Linux免密登录(SSH)

字数:460

本文作者:Longger

发布时间:2018-01-09, 13:33:26

最后更新:2024-11-05, 23:04:01

原始链接:https://www.longger.xin/article/d7944e86.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

×

喜欢就点赞,疼爱就打赏

github