Linux配置服务器间的免密登录

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(存放公钥)两

个文件

笔记插图(第 1 页)

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文件中