方法一:
1、执行ssh-keygen命令一路回车
[root@localhost ~]# cd .ssh/
[root@localhost .ssh]# ssh-keygen -t rsa
2、执行ssh-copy-id将A的公钥分发给B
[root@localhost .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.2
3、在A服务器上免密登录B服务器:
[root@localhost .ssh]# ssh root@192.168.0.2
Last login: Tue Jul 5 16:32:12 2022 from 192.168.0.3 # 登录成功
方法二:
1、 将A的公钥文件发给B:
[root@localhost .ssh]# scp id_rsa.pub root@192.168.0.2:/root/.ssh
2、 在B上创建authorized_keys文件:
[root@localhost .ssh]# cd /root/.ssh/
[root@localhost .ssh]# cat id_rsa.pub >> authorized_keys
以上方法一、方法二均是单项A到B的免密,如双向请在B服务器上重复此操作;
如失败请检查文件权限:
a) 服务器B上.authorized_keys文件权限必须是600(建议普通用户)或者644(建议root用户)
chmod 644 authorized_keys
如依然失败,请检查.ssh/(700),id_rsa,id_rsa.pub等文件权限。
_________________________________________________________________________
1、ssh-keygen命令讲解:
使用 ssh-keygen 会在~/.ssh/目录下生成两个文件,默认生成的两个文件是:id_rsa(私钥文件)、id_rsa.pub(公钥文件)。
ssh-keygen常用参数说明:
-t: 密钥类型,可以选择 dsa | ecdsa | ed25519 | rsa,默认为rsa。
-f: 密钥目录位置, 默认为当前用户home路径下的.ssh隐藏目录, 也就是~/.ssh/
-C: 指定此密钥的备注信息, 例如:“test@test.com”
-N: 指定此密钥对的密码, 如果指定此参数, 则命令执行过程中就不会出现交互确认密码的信息了.
2、ssh-copy-id 命令讲解
ssh-copy-id 命令可以把本地主机的公钥复制到远程主机的 authorized_keys 文件上。authorized_keys 文件用来验证 client 。
常用参数说明:
- i 指定公钥文件 (如不指定则使用默认 ~/.ssh/identity.pub 作为默认公钥)