SSH无密码登录的设置步骤
首先我们在自己的Linux系统上生成一对SSH Key:SSH密钥和SSH公钥.密钥保存在自己的Linux系统上。
然后公钥上传到Linux服务器.之后我们就能无密码SSH登录了.SSH密钥就好比是你的身份证明.
1在自己的Linux系统上生成SSH密钥和公钥
打开终端,使用下面的ssh-keygen来生成RSA密钥和公钥.-t表示type,就是说要生成RSA加密的钥匙.
ssh-keygen -t rsa
RSA也是默认的加密类型.所以你也可以只输入ssh-keygen.默认的RSA长度是2048位.如果你非常注重安全,那么可以指定4096位的长度.
ssh-keygen -b 4096 -t rsa
生成SSH Key的过程中会要求你指定一个文件来保存密钥,按Enter键使用默认的文件就行了.然后需要输入一个密码来加密你的SSH Key.密码至少要20位长度.SSH密钥会保存在home目录下的.ssh/id_rsa
文件中.SSH公钥保存在.ssh/id_rsa.pub
文件中.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
Generating
public
/
private
rsa
key
pair
.
Enter
file
in
which
to
save
the
key
(
/
home
/
matrix
/
.
ssh
/
id_rsa
)
:
按
Enter键
Enter
passphrase
(
empty
for
no
passphrase
)
:
输入一个密码
Enter
same
passphrase
again
:
再次输入密码
Your
identification
has
been
saved
in
/
home
/
matrix
/
.
ssh
/
id_rsa
.
Your
public
key
has
been
saved
in
/
home
/
matrix
/
.
ssh
/
id_rsa
.
pub
.
The
key
fingerprint
is
:
e1
:
dc
:
ab
:
ae
:
b6
:
19
:
b0
:
19
:
74
:
d5
:
fe
:
57
:
3f
:
32
:
b4
:
d0
matrix
@
vivid
The
key'
s
randomart
image
is
:
+
--
-
[
RSA
4096
]
--
--
+
|
.
.
|
|
.
.
|
|
.
.
.
.
.
|
|
.
.
o
o
.
.
E
.
|
|
o
S
.
.
o
.
.
.
|
|
=
.
.
+
.
.
.
|
|
o
.
.
.
o
.
|
|
.
o
.
|
|
.
++
o
|
+
--
--
--
--
--
--
--
--
-
+
|
查看.ssh/id_rsa
文件就会看到,这个文件是经过加密的(encrypted).也就是用你输入的密码来加密.
less .ssh/id_rsa
SSH无密码登录
2将SSH公钥上传到Linux服务器
可以使用ssh-copy-id
命令来完成.
ssh-copy-id username@remote-server
SSH无密码登录
输入远程用户的密码后,SSH公钥就会自动上传了.SSH公钥保存在远程Linux服务器的.ssh/authorized_keys文件中.
上传完成后,SSH登录就不需要再次输入密码了.但是首次使用SSH Key登录时需要输入一次SSH密钥的加密密码.(只需要输入一次,将来会自动登录,不再需要输入密钥的密码.)
使用scp命令来传送文件时也不需要输入密码.
SSH Key的知识
Linux系统有一个钥匙环(keyring)的管理程序.钥匙环受到用户登录密码的保护.当你登录Linux系统时,会自动解开钥匙环的密码,从而可访问钥匙环.SSH的密钥和公钥也存储在钥匙环.所以初次使用SSH密钥登录远程Linux服务器时需要输入一次SSH密钥的密码.而将来使用SSH密钥登录时不再输入密码.Ubuntu的钥匙环程序是seahorse.
SSH密钥就好比是你的身份证明.远程Linux服务器用你生成的SSH公钥来加密一条消息,而只有你的SSH密钥可以解开这条消息.所以其他人如果没有你的SSH密钥,是无法解开加密消息的,从而也就无法登录你的Linux服务器.
SSH无密码登录的设置就是这么简单。