Linux SSH 使用公钥登录
服务器,永不嫌多
今天偶然间点开了腾讯云的广告,看了下他们家的服务器。配置的话,硬盘是比阿里云多出 10G,价格的话是 120RMB 一年。还是挺划算的,便入了一台。但是由于前阵子腾讯云误删客户数据爆出超卖服务器的事情,我只敢把原来在搬瓦工 VPS 上的一些不怎么重要网站逐步迁移过来,而像博客这种站还是放在阿里云上。搬瓦工那边就只当做梯子来用。 目前手里有的三台服务器我都开了 Uptimerobot 检测,很舒服。
想要更安全
我给腾讯云这台服务器的定位是给拿来练手的,因为没什么重要文件,玩坏了就重装。 之前部长给了我助手服务器的私钥,但是我并不知道怎样在 Mac 上的终端里使用。正好这次在群里看到王小军老师发了 SSH 使用公钥免密码登录的教程。我便想着尝试给服务器配上公钥登录。这样应该会安全不少。
生成密钥
首先先是生成密钥:
ssh-keygen -t rsa
会提示输入密钥的名字,以及密码。注意:如果填写了密码,那么在使用密钥登录服务器时会要求输入密码。
还是要输入一个密码,就很繁琐。因此在提示输入密码时,直接两下回车,不要密码。
之后在当前目录下会有生成的公钥和私钥。公钥是带.pub
后缀的,私钥是不带的
然后我们需要把公钥上传到服务器,私钥放在本地。
上传公钥到服务器并修改配置
首先确保服务器上有~/.ssh/authorized_keys
文件,没有的话请自行创建。(我腾讯云的服务器上是有的)
之后,可以在本地使用scp
将文件上传到服务器。不是那个 SCP 基金会啦
scp
全称 secure copy,用于在 Linux 下进行远程拷贝文件的命令。 命令格式:scp [参数] [原路径] [目标路径]
scp ~/.ssh/id_rsa.pub xxx@host:~/.ssh/authorized_keys
这样我们的密钥就会被复制进入服务器上的~/.ssh/authorized_keys
文件中。
之后需要更改 SSH 的配置,打开配置文件:
sudo vim /etc/ssh/sshd_config
如果PubkeyAuthentication yes
前有#
的话就去掉#
的注释,或者直接手动加上这一句。
这样就打开了公钥的登录。
之后重启 SSH 服务:
sudo service sshd restart
本地配置私钥
下面需要将私钥配置到本地。我这边以 Mac 为例,踩了不少坑。
Mac 下默认是把私钥放在~/.ssh/authorized_keys
下。(其实放哪都无所谓,反正之后在配置文件里都可以改)
之后就是加入别名,之后我们就可以直接使用别名登录了,十分方便简洁。
sudo vim ~/.ssh/config
若没有这个文件,新建即可。 输入以下内容:
Host alias #自定义别名
HostName hostname #替换为你的 SSH 服务器 IP 或 Domain
Port port #SSH 服务器端口,默认为 22
User user #SSH 服务器用户名
IdentityFile ~/.ssh/authorized_keys/id_rsa #第一个步骤生成的公钥文件对应的私钥文件
这里的IdentityFile
就可以改成你的私钥地址啦~(再次强调私钥是那个没有后缀名的文件)
之后我们可以直接使用ssh 你设置的别名
进行登录!!
超简便是不是!
关闭服务器的密码登录
确保你可以使用密钥登录上你的服务器之后,就可以关闭服务器上的密码登录了。这样就更加安全了。 打开 SSH 配置:
sudo vim /etc/ssh/sshd_config
之后加上 / 更改成:PasswordAuthentication no
一定要确保可以使用密钥!不然关闭了密码登录后就完蛋了,再也登不上去了!不要问我为什么知道
之后重启 SSH 服务:
sudo service sshd restart
完成啦!
这样就 OK 啦!尽情享受密钥登录带来的方便与安全吧!之后的计划是给阿里云的服务器也配上密钥登录。
不过今晚还要继续肝 C 语言大作业QAQ,立了个 flag 说明天下午上课交。
喜欢这篇文章?为什么不打赏一下呢?