使用SSH key登录服务器

前言

首先要有个概念,为什么要使用ssh密钥的形式登录,使用用户密码直接登录不行吗?答案是可以,可以只使用密码登录,但是如果服务器暴露在外网,有很大的安全隐患,很容易被别有用心的人扫描到SSH端口,然后被暴力破解。而密钥登录的方式,会增强你服务器的安全性。当然,还有一种证书登录的方式,这里先不谈,先说一下大多数云服务厂商所支持的方式–密钥登录。

本文不讲述原理,仅简单提下,密钥登录需要公钥和私钥,公钥保存在服务器上,负责加密,私钥保存在客户端侧,用来解密,同时,还会保存服务器端公钥的指纹,来确定信息来自服务器。
下面快来看下怎么为你的服务器使用密钥登录吧。

太啰嗦?点我直达

在一些云服务厂商中,可以很方便的对ssh密钥进行管理,例如腾讯云

可以看到,使用腾讯云可以很方便的创建、删除密钥,绑定解绑实例。
但是,并不是所有的云厂商的设计都如此的方便,比如天翼云,

关于实例的绑定,目前我只找到了新建主机时添加密钥,已有的主机实例绑定密钥暂未找到。怎么办?手动安装吧。
个人最喜欢的是使用XShell生成密钥,它可以方便的进行生成与管理密钥,交互上也是很舒服的。不想用,或者Mac上没有XShell,那么手动命令行敲一下呗。

生成密钥对

1
ssh-keygen

中间过程会提示是否为私钥添加密码,建议加一下,其他默认回车就好。
之后需要我们把生成的公钥public key保存到服务器上并添加相应的权限。

1
2
3
4
cd .ssh
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
chmod 700 ~/.ssh

接下来,配置ssh为密钥登录

1
nano /etc/ssh/sshd_config 

确认一下sshd_config中的这3项是否如下所示:

1
2
3
RSAAuthentication yes
PubkeyAuthentication yes
PermitRootLogin yes

确认后,保存,退出登录

1
logout

再使用密钥登录你的服务器,来继续修改配置文件

1
2
PasswordAuthentication no #禁用掉密码登录

最后,重启 SSH 服务

1
service sshd restart

可以试下,已经不能通过密码登录了,至此,所有设置已经完成。