Linux SSH 使用公钥登录

Linux SSH 使用公钥登录

随便写写 Linux 1370 字 / 3 分钟

服务器,永不嫌多

今天偶然间点开了腾讯云的广告,看了下他们家的服务器。配置的话,硬盘是比阿里云多出 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
12月25日 更新 司大哥告诉我其实有更简单的 ssh-copy-id 命令,直接就可以把本地的密钥上传至服务器。 ssh-copy-id -i .ssh/id_rsa.pub [email protected] 真的是方便了不少!!Li4n0 牛逼!

本地配置私钥

下面需要将私钥配置到本地。我这边以 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 说明天下午上课交。