一、生成密钥
生成密钥的方式有多种,这里主要介绍3中生成方式,分别是通过ssh-keygen、xshell、puttygen生成。

1.通过ssh-keygen方式生成密钥
如果你使用的是Linux主机,那么我们可以通过ssh-keygen的方式生成一对密钥,具体方法是在终端输入以下命令:

ssh-keygen -t rsa
上述命令的意思是通过rsa加密的方式生成一对密钥,过程如下:

1.png

通过上述过程,我们就在/home/centos/.ssh/目录下生成了两个文件id_rsa和id_rsa.pub两个文件(生成过程这里都是回车默认生成的),分别为私钥和公钥文件,公钥文件(id_rsa.pub)就是在接下来需要放置在要远程登陆的服务器上的文件,而id_rsa就是要保存到进行远程登陆的客户端的私钥文件。

通过上述步骤,我们就得到了一个id_rsa_2048.pub文件(当然,你可能命名了其他名字),这个就是接下来我们需要放置在要进行远程登陆的公钥文件。

二、将密钥保存到远程服务器
1.如果是通过ssh-keygen生成的密钥对,那么我们需要将id_rsa.pub文件放置到你要进行远程登陆的用户主目录下,比如这里的用户名为centos,主目录为/home/centos,那么我们需要将id_rsa.pub公钥放置到/home/centos/.ssh目录下,然后执行以下操作:

执行mv ./id_rsa.pub ./authorized_keys,将id_rsa.pub文件,重命名为 authorized_keys;
执行chmod 600 ./authorized_keys 命令,修改权限;
执行chmod 700 ~/.ssh修改主目录下.ssh目录的权限为700;
执行命令 sudo vi /etc/ssh/sshd_config进行配置,将PubkeyAuthentication 后面的值改成yes ,保存;
重启sshd服务(Debian/Ubuntu执行sudo /etc/init.d/ssh restart ;CentOS执行:sudo /etc/init.d/sshd restart)。
注:centos7重启服务方式与以前不同,请执行systemctl restart sshd.service。

三、使用客户端测试使用密钥登陆
1.使用xshell进行密钥登陆

运行xshell5,顶部菜单”文件”->”新建”,接下来使用xshell进行登陆的步骤如下:

点击确定,登陆成功!

四、修改远程Linux服务器sshd服务配置
此时,我们是可以通过密码和密钥验证两种方式进行登陆的,我们需要设置以后只能通过密钥验证的方式进行登陆,具体设置的步骤如下:

修改/etc/ssh/sshd_config文件,将PasswordAuthentication yes 修改成 PasswordAuthentication no;
重启sshd服务,Debian/Ubuntu执行sudo /etc/init.d/ssh restart ;CentOS执行:sudo /etc/init.d/sshd restart。
注:centos7重启服务方式与以前不同,请执行systemctl restart sshd.service
至此,设置完成,不过我们需要保存好生成的私钥文件。

发表评论