
Linux配置服务器间的免密登录
步骤一:使用ssh-keygen命令生成本地的公钥和私钥
ssh-keygen命令 用于为“ssh”生成、管理和转换认证密钥,它支持RSA和DSA两种认证密钥。SSH 密钥默认保留在
~/.ssh 目录中。如果没有 ~/.ssh 目录,ssh-keygen命令会使用正确的权限创建一个。
1
ssh-keygen -t rsa
ssh-keygen的命令可选项
1
-b:指定密钥长度;
2 -e:读取openssh的私钥或者公钥文件;
3 -C:添加注释;
4 -f:指定用来保存密钥的文件名;
5 -i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
6 -l:显示公钥文件的指纹数据;
7 -N:提供一个新密语;
8 -P:提供(旧)密语;
9 -q:静默模式;
10 -t:指定要创建的密钥类型。
执行完命令后,会有几个选项给你选择,一般来说直接回车,使用默认配置即可。需要注意的是,如果本身服务器已经
生成过ssh秘钥了,这一步可以省略
想知道秘钥曾经生成过,可以看步骤二。
步骤二:查看秘钥是否生成成功
1
ll ~/.ssh/
正常来说,如果ssh-keygen命令执行成功,我们可以在目录中看到有id_rsa(存放私钥)和id_rsa.pub(存放公钥)两
个文件

authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥
id_rsa : 生成的私钥文件
id_rsa.pub : 生成的公钥文件
know_hosts : 已知的主机公钥清单
如果希望ssh公钥生效需满足至少下面两个条件:
\1) .ssh目录的权限必须是700
\2) .ssh/authorized_keys文件权限必须是60
步骤三:使用ssh-copy-id命令将公钥复制到其他服务器中
先简单介绍一下ssh-copy-id命令
ssh-copy-id 命令可以把本地主机的公钥复制到远程主机的 authorized_keys 文件上。authorized_keys 文件用来验证
client 。使用 ssh-copy-id 命令将本地公钥复制到远程主机之后可以实现免密登录远程主机。如果不传入 -i 参数,ssh-
copy-id 使用默认 ~/.ssh/identity.pub 作为默认公钥。如果多次运行 ssh-copy-id ,该命令不会检查重复,会在远程主
机中多次写入 authorized_keys 。
注意,本地 ~/.ssh/id_rsa 的权限,chmod 400 ~/.ssh/id_rsa ,该文件包含用于授权的私钥,如果该文件可以被其他用
户访问,ssh 会忽略该私钥。
1
ssh-copy-id [ -i [identity_file] ] [user@]machine
-i 指定公钥文件
1
ssh-copy-id -i ~/.ssh/id_rsa.pub 想要免密登录的IP地址
2
3 ssh-copy-id -i ~/.ssh/id_rsa.pub lqq@192.168.30.92
执行完上述命令后,我们后续就可以免密登录其他服务器了。
可参考的批量赋权脚本
如果需要配置免密登录的服务器比较多,我们可以通过脚本来解决这些重复性的动作。
1
#!/bin/bash
2 # host填写实际想要免密登录的ip
3 host=(1.1.1.1 1.1.1.2)
4
5 ssh-keygen -t rsa
6 #迭代操作
7 for i in ${!host[@]}
8 do
9 ssh-copy-id -i ~/.ssh/id_rsa.pub ${host[$i]}
10 done
手动处理
通过scp将内容写到对方的文件中
命令:scp -p ~/.ssh/id_rsa.pub root@<remote_ip>:/root/.ssh/authorized_keys
举例:
[root@test .ssh]# scp -p
~/.ssh/id_rsa.pub
root@192.168.91.135:/root/.ssh/autho
1
rized_keys
2
root@192.168.91.135's password:
3
id_rsa.pub 100% 408 0.4KB/s 00:00
4
[root@test .ssh]#
5
[root@test .ssh]#
6
[root@test .ssh]#
7
[root@test .ssh]# ssh
8
root@192.168.91.135
9
Last login: Mon Oct 10 01:27:02 2016
from 192.168.91.133
[root@localhost ~]#
也可以分为两步操作:
$ scp ~/.ssh/id_rsa.pub root@<remote_ip>:pub_key //将文件拷贝至远程服务器
$ cat ~/pub_key >>~/.ssh/authorized_keys //将内容追加到authorized_keys文件中, 不过要登录远程
服务器来执行这条命令
手工复制粘贴的方式
将本地id_rsa.pub文件的内容拷贝至远程服务器的~/.ssh/authorized_keys文件中