在Linux服务器客户端中构建密钥对验证进行远程连接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Linux服务器客户端中构建密钥对验证进行远程连接相关的知识,希望对你有一定的参考价值。

构建密钥对验证SSH体系的基本过程包括四步:
技术图片

SSH客户端:192.168.1.1
SSH服务器:192.168.1.2

1、在客户端创建密钥对:

[[email protected] /]# ssh-keygen -t ecdsa           
# “ -t ” 用来指定加密算法,这里使用ecdsa,还有一个是dsa。
Generating public/private ecdsa key pair.
Enter file in which to save the key (/root/.ssh/id_ecdsa):      
#指定私钥存放位置,若直接按enter,则默认保存在宿主目录中的隐藏文件夹中.ssh下。
Created directory ‘/root/.ssh‘.
Enter passphrase (empty for no passphrase):       #设置私钥短语
Enter same passphrase again:      #确认所设置的短语

                ..........................
+---[ECDSA 256]---+
|     .. =oo.+o.  |
|      .=.= *.o.oo|
|      +.= = B oo+|
|     . = = B . = |
|    . o S o . =  |
|     + o = o . . |
|      = = . .    |
|       + E .     |
|          .      |
+----[SHA256]-----+
当出现以上提示,则表示创建成功。

私钥短语用来对私钥文件进行保护,在进行远程连接时必须要输入正确的私钥短语。若不设置私钥短语,那么在连接时,就实现了无口令登录,不建议这样做。

2、将公钥文件上传至SSH服务器(这里使用简单的方法,一条命令搞定上图中的第二步和第三步):

[[email protected] /]# ssh-copy-id -i ~/.ssh/id_ecdsa.pub [email protected]
#  “ -i ” 用来指定公钥文件,“ lisi”是SSH服务器的用户
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_ecdsa.pub"
The authenticity of host ‘192.168.1.2 (192.168.1.2)‘ can‘t be established.
ECDSA key fingerprint is SHA256:uArLTW6MJOgdp+OZQbywwJdlGUEKDmOC62CnU6zyCgA.
ECDSA key fingerprint is MD5:b8:ca:d6:89:a2:42:90:97:02:0a:54:c1:4c:1e:c2:77.
Are you sure you want to continue connecting (yes/no)? yes              #输入“yes”
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]‘s password:                  #输入用户“lisi” 的密码

#验证密码后,会自动将公钥文件添加到SSH服务器“ lisi ”用户的宿主目录下的.ssh/authorized_key
Number of key(s) added: 1

Now try logging into the machine, with:   "ssh ‘[email protected]‘"
and check to make sure that only the key(s) you wanted were added.
出现上述提示后,则表示上传成功。

4、在客户端使用密钥对验证:

[[email protected] /]# ssh [email protected]            #请求连接
Enter passphrase for key ‘/root/.ssh/id_ecdsa‘:             
#输入生成密钥时设置的私钥短语,而不是lv用户的密码了
Last login: Sat May 18 22:13:51 2019
[[email protected] ~]$ id               #查询当前用户的id,结果为登录成功
uid=1000(lisi) gid=1000(lisi) 组=1000(lisi),10(wheel) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

若在配置中遇到错误,则要注意是否与sshd服务的配置文件中发生了冲突,因为sshd服务的配置项是否启用了密钥对验证和指定的公钥库文件位置都对远程连接有影响。sshd服务配置项的解释具体参考这里: https://blog.51cto.com/14154700/2402246

以上是关于在Linux服务器客户端中构建密钥对验证进行远程连接的主要内容,如果未能解决你的问题,请参考以下文章

实战证明LINUX系统下密钥对验证的安全性

如何构建密钥对验证的SSH体系

Linux中远程访问SSH及TCP Wrappers控制

linux redhat6.5 构建SSH服务及SSH构建密钥对验证

Openssh服务配置:控制用户登录 构建密钥对验证ssh

SSH远程管理,构建密钥对验证的SSH体系,设置SSH代理功能。