CentOS 7.2设置SSH公钥登录

来源:互联网 发布:html矢量图标js下载 编辑:程序博客网 时间:2024/05/29 07:11

        惯例,先说下环境,我用的是阿里云ESC服务器,装载CentOS 7.2的系统盘,没有选择任何的附加包之类的。

        为了安全性的考虑,我想要配置使用公密钥的方式去连接服务器。这里需要修改服务器的SSH服务,主要分为三步:修改服务器SSH配置、客户端生成公钥、服务器加入客户端公钥,下面是我操作的过程:

 一、修改服务器SSH配置

1. 登录服务器,输入命令vi /etc/ssh/sshd_config修改配置文件

2. 找到RSAAuthentication、PubkeyAuthentication、AuthorizedKeyFiles、StrictModes所在的行,如果被#注释了,就取消#号,改为如下配置:

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeyFiles .ssh/authorized_keys

StrictModes no

这里解释一下:

RSAAuthentication设置为yes,意思是设置开启使用RSA算法的基于rhosts的安全验证;

PubkeyAuthentication设置为yes,意思是设置开启公钥验证;

AuthorizedKeyFiles后面的目录,是你上传的公钥所保存的文件;

StrictModes设置为no,意思是设置关闭ssh在接收登录请求之前先检查用户家目录和rhosts文件的权限和所有权。

3. 修改好ssh的配置文件后保存并退出,使用systemctl restart sshd.service重启SSH服务,这一步建议在公钥上传后再操作,不然你一旦断开了服务器,又没有允许登录的服务器公钥,后果你懂的。

二、客户端生成公钥

        使用命令ssh-keygen -t rsa,这里会提示你是否修改公密钥的文件名和密码。默认公密钥的文件名是id_rsa,如果你有多个公密钥,可能需要你在ssh连接服务器的时候,手动指定使用哪个密钥;而如果设置了密码,在连接服务器的时候,会让你输入密码,这个酌情自定。

三、服务端加入客户端公钥

        生成好公密钥后,需要将公钥上传到服务器上,可以在ssh开启公钥认证之前,先用scp等命令发送到之前AuthorizedKeyFiles指定的目录下,也可以vi打开公钥文件,将内容复制到对应的位置。比如按照我之前的设置,需要放到家目录的.ssh/authorized_keys文件,我这里是将内容复制出来,vi打开authorized_keys文件后,写入保存并退出。需要注意的是,这里的authorized_keys文件,虽然我们StrictModes设置为了no,但是还是建议修改一下文件的执行权限,比如用命令chmod 600 authorized_keys。

        以上三步完成之后,你就可以用你的公密钥去登录服务器了,这里我假设公钥使用的不是默认的名称,那么连接的命令是:ssh -i ~/.ssh/privatekeyname username@serverip。如果还设置了密码,那么按照提示输入密码,就可以连接到服务器了。
原创粉丝点击