前言
多个服务器之间进行数据的传递,在使用scp
命令进行文件传输时,经常需要输入对应的远程用户名和密码,于是就使用了linux中的ssh免密登录进行安全的数据传输以及访问。
常用命令
- ssh-keygen -t rsa -b 4096 -C “备注”
[root@JD .ssh]# ssh-keygen -t rsa -b 4096 -C "京东云服务器"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
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:D7uk2t7oweBS1aw8v7L8y722WtvPenFXlqKcgSJaKr0 京东云服务器
The key's randomart image is:
+---[RSA 4096]----+
| |
| o |
| . o . .|
| = o . . . .o|
| . * = S . + ...|
| . * o o + + . o|
| o o o + o o.|
| E o.B =.o .. |
| .+O+O+=oo+o |
+----[SHA256]-----+
1. -t rsa:t是type的缩写
RSA:RSA加密算法是一种非对称加密算法,是由三个麻省理工的牛人弄出来的,RSA是他们三个人姓的开头首字母组合。
DSA:Digital Signature Algorithm (DSA)是Schnorr和ElGamal签名算法的变种。
为了让两个linux机器之间使用ssh不需要用户名和密码。所以采用了数字签名RSA或者DSA来完成这个操作。ssh-keygen默认使用rsa密钥,所以不加-t rsa也行,如果你想生成dsa密钥,就需要加参数-t dsa。
2. -b 4096:b是bit的缩写
-b 指定密钥长度。对于RSA密钥,最小要求768位,默认是2048位。命令中的4096指的是RSA密钥长度为4096位。
DSA密钥必须恰好是1024位(FIPS 186-2 标准的要求)。
3. -C "备注":C是comment的缩写
起到备注的作用,可以想象成java中的注释。
- 此时会在默认的
/root/.ssh
目录下生成如下文件
# id_rsa: 密钥自己
-rw------- 1 root root 3243 Aug 27 16:38 id_rsa
# id_rsa.pub: 公钥
-rw-r--r-- 1 root root 744 Aug 27 16:38 id_rsa.pub
- ssh-copy-id ip地址
# 该命令会将上面命令生成的id_rsa.pub公钥添加到39.108.9.37中的/root/.ssh/authorized_keys
ssh-copy-id 39.108.9.37
#ssh-copu-id 命令默认使用的时22端口进行传输,如果端口修改可以添加-p命令,例如修改端口号为10020
ssh-copy-id -p 10020 39.108.9.37