Linux 实现ssh免密两种方法
提示:准备两台机器以上
比如我的:
A机器:10.0.0.11
B机器:10.0.0.12
一、单向免密
1.生成密钥对
A机器:10.0.0.11
[root@bk_paas ~]# ssh-keygen -t rsa -b 2048 -N "" -f $HOME/.ssh/id_rsa
Generating public/private rsa key pair.
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:zABWuctyvuV62VFRCxFYqMH7zZ5yuiMxWMzX3ZVueMI root@bk_paas
The key's randomart image is:
+---[RSA 2048]----+
| o..o +=+. .|
| . .. o o .. o.|
| .+ + ..o+..|
| .+* . oE.+.|
| . +So + + |
| . = o o o |
| + .= o . |
| .o+ + + |
| o+..o* |
+----[SHA256]-----+
以上选项说明
-t 选项(默认 rsa)
生成的密钥类型(不带默认为 rsa),类型有四种分别是 dsa | ecdsa | ed25519 | rsa
dsa 因安全性不高,基本已经不再使用。
ecdsa 因技术原因等,基本已经不再使用。
ed25519 加解密速度快,生成时间快,且安全性更高。
rsa 加解密速度慢,生成时间慢,安全性没有 ed25519 高。(用的人多兼容性好)
-b 选项
表示生成的密钥的大小(以字节:byte 为单位)
在生成时如果指定的 key size 太小也会有安全的问题,建议指定 key size 为 2048 或更大。
-N 选项
指定新密码,'' 表示密码为空。
-f 选项
指定密钥对生成路径
2.生成authorized_keys文件并授权
解释:authorized_keys 作用于用来实现免密的公钥文件,需要传给目标端,当客户端访问目标端时,会访问目标端的公钥也就是authorized_keys ,然后这边就会拿私钥去解公钥,由于公钥是客户端这边传过去的,自然而然就能成功解析出来,从而实现免密
A机器:10.0.0.11
# 利用生成id_rsa.pub公钥 生成authorized_keys文件
cat $HOME/.ssh/id_rsa.pub >>$HOME/.ssh/authorized_keys
chmod 600 $HOME/.ssh/authorized_keys
3.复制authorized_keys文件到目标主机
A机器:10.0.0.11 -> B机器:10.0.0.12
rsync -a $HOME/.ssh/authorized_keys root@10.0.0.12:/root/.ssh/
注意:传过去以后就已经实现了免密(单向)客户端->服务端
二、双向免密
1.生成密钥对
A机器:10.0.0.11
[root@bk_paas ~]# ssh-keygen -t rsa -b 2048 -N "" -f $HOME/.ssh/id_rsa
Generating public/private rsa key pair.
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:zABWuctyvuV62VFRCxFYqMH7zZ5yuiMxWMzX3ZVueMI root@bk_paas
The key's randomart image is:
+---[RSA 2048]----+
| o..o +=+. .|
| . .. o o .. o.|
| .+ + ..o+..|
| .+* . oE.+.|
| . +So + + |
| . = o o o |
| + .= o . |
| .o+ + + |
| o+..o* |
+----[SHA256]-----+
2.生成authorized_keys文件并授权
A机器:10.0.0.11
# 利用生成id_rsa.pub公钥 生成authorized_keys文件
cat $HOME/.ssh/id_rsa.pub >>$HOME/.ssh/authorized_keys
chmod 600 $HOME/.ssh/authorized_keys
3.传输的密钥对到服务端
A机器:10.0.0.11 -> B机器:10.0.0.12
rsync -a $HOME/.ssh/id_rsa* $HOME/.ssh/authorized_keys root@10.0.0.12:/root/.ssh/
# 注意有可能没有rsync命令需要进行下载
# yum install -y rsync
注意:以上输入密码后,传输到目标端后就可以成功双向免密
总结
快去试试吧,等你好消息!