密钥对生成完成后,我们需要将公钥放置在SSH服务端中才能使用。要么使用ssh-copy-id命令,要么使用任意方式登陆到服务器上然后手工复制。一般情况下,公钥需要被复制到服务器sshd服务所配置的特定目录的特定文件中(通过sshd_config配置文件中的AuthorizedKeysFile参数指定,默认为/home/.ssh)。
一、使用ssh-copy-id命令
在Linux环境下,我们可以使用ssh-copy-id命令将公钥复制到SSH服务端的authorized_keys文件中:

使用ssh-copy-id上传SSH客户端公钥
需要注意,authorized_keys是一个普通的文本文件,其中可以包括多个公钥。例如,如下的文件就包含两个公钥:

包含多个客户端公钥的authorized_keys文件
如果要向authorized_keys文件最后追加公钥,可以使用如下的命令:
1 |
cat <your_key >>~/.ssh/authorized_keys |
authorized_keys的格式可以参考man sshd中的AUTHORIZED_KEYS FILE FORMAT一节:

authorized_keys文件格式
简单地说,通过配置authorized_keys的每一行可以对不同的用户进行不同的细粒度的控制。如控制不同用户可以执行的命令、设置环境变量、设置允许登录的主机或IP地址等。
二、登陆到服务器上然后手工复制
我们也可以使用任意的方法,将生成的客户端公钥复制到SSH服务端的~/.ssh/authorized_keys文件中。如果没有.ssh目录,需要自己建立一个,并更改目录权限为700:

.ssh目录的权限为700
此外,authorized_keys文件的权限为644。此处需要注意,上述的权限都是针对服务器上登陆者对应用户而言的,主要有三个权限:
1)/home/username,目录的权限应该是700
2)/home/username/.ssh,目录的权限应该是700
3)/home/username/.ssh/authorized_keys,文件的权限应该是644
尤其是在服务器上新建用户的情况下,在使用adduser创建用户并设置了密码后,需要su到新创建的用户下创建.ssh目录及authorized_keys,并赋予正确的权限。
然后直接将id_rsa.pub的内容粘贴到authorized_keys文件的最后即可:

id_rsa.pub
很明显,包含多个客户端公钥的authorized_keys文件中的第一个公钥就是上图的公钥。
三、使用ssh命令进行密钥认证方式登陆
1、私钥无密码保护时
无面面保护时直接登陆成功,在此不再赘述。
2、私钥有密码保护时

有密码保护的私钥登陆SSH
四、使用Xshell进行密钥认证方式登陆
使用Xshell新建连接,输入SSH服务端IP地址,在“用户身份验证”中的“方法”中选择为基于公钥的验证,然后填入公钥对应的用户名和私钥证书:

Xshell配置SSH密钥对认证
转载时请保留出处,违法转载追究到底:进城务工人员小梅 » SSH密钥对的使用(使用密钥对认证方式登陆SSH服务器)