论如何优雅地配置一台云服务器

举报
PaulZhn 发表于 2020/02/29 00:33:13 2020/02/29
【摘要】 论如何优雅地配置一台云服务器牛客网联合华为云搞了个大新闻,搞出了9块钱一年的学生机。配置跟国内各大云服务商的学生机持平,1核1G内存+40G系统盘+1M带宽,跑点常见的服务毫无压力。此外,这个学生机还支持ipv6,这也是相当让我惊喜的一点——随着现在三家运营商ipv6建设的全面铺开,再加上高校教育网原本就对ipv6支持的比较完善,拥有一个v6地址在很多时候可以发挥出意想不到的效果。当然,服务...

论如何优雅地配置一台云服务器

牛客网联合华为云搞了个大新闻,搞出了9块钱一年的学生机。配置跟国内各大云服务商的学生机持平,1核1G内存+40G系统盘+1M带宽,跑点常见的服务毫无压力。此外,这个学生机还支持ipv6,这也是相当让我惊喜的一点——随着现在三家运营商ipv6建设的全面铺开,再加上高校教育网原本就对ipv6支持的比较完善,拥有一个v6地址在很多时候可以发挥出意想不到的效果。

当然,服务器买来刚初始化完之后,里面空空如也,并且有很多默认设置实际上并不顺手。这篇文章就是用来记录如何将这台机器搞得更顺手一点,“优雅”一点。

云服务器,几乎必然要上Linux了。(什么?你想上Windows?)Ubuntu是我用的比较顺手的一个系统,华为云默认提供了Ubuntu1604和Ubuntu1804两种镜像,那我肯定要选新一点的1804啦。不过这个选择还给我稍稍带来了一点麻烦,这个我们一会说。

1. 开启ssh key登录

华为云的主机默认是采用密码登录的,用户一上来就给的是root。这样固然方便,但是用密码登录显然不如用ssh key安全和优雅,那么第一步就让我们先来搞搞它。

登陆上服务器之后,在terminal里输入

ssh-keygen

之后有几个可选的配置,直接敲回车采用默认设置即可。然后运行结果就会是这个样子的:

root@ecs-sn3-medium-2-linux-20200224112405:~# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:eklTx2jLBz8AyrPw/KI52HPso9bKBbKZe4ZPPDmtJjw root@ecs-sn3-medium-2-linux-20200224112405
The key's randomart image is:
+---[RSA 2048]----+
|        .        |
|     . . . o     |
|    . +   * o    |
|     + o + *     |
|  . . + S o +    |
|   * + + o . .   |
| .++*o= +        |
|  E+OB=o         |
|  .OOB..         |
+----[SHA256]-----+

然后我们按图索骥,进入到/root/.ssh/这个目录里。正常情况下,如果你是第一次生成ssh key,这里会有三个文件:id_rsaid_rsa.pubauthorized_keys三个文件。其中,第一个是私钥,相当于你的密码,保管好别随便给别人;第二个是公钥,这个是用来告诉别人你的私钥应该长什么样子的;第三个文件中,保存着所有能登录到这台服务器的公钥,现在它还是空着的。

那么下一步,我们在命令行里执行:

cat id_rsa.pub > authorized_keys

这行指令是将id_rsa.pub里的内容追加到authorized_keys里的。然后,重启一下sshd服务:

systemctl reload sshd

然后将私钥保存到本地,这时我们就可以通过私钥登录服务器啦。

这时,我们虽然能通过ssh key登录,但是由于原来的密码登录方式还没有禁用掉,不够安全,下一步需要将密码登录禁用掉。

在terminal里输入:

vi /etc/ssh/sshd_config

打开sshd的配置文件,跳转到第56行,有一行

# PasswordAuthentication yes

将前面的#号去掉,并将yes改成no,保存,按照上面的方法再重新加载一次sshd服务:

systemctl reload sshd

这样就可以了。

2. 安装zsh和oh-my-zsh

ubuntu默认的shell是bash,也是应用最广泛的一种shell——什么,你不知道这是什么?去查查吧,基础中的基础啊——当然功能是够用的,但是不够优雅。zsh是另一种shell,它功能强大,但是由于配置晦涩难懂,也十分复杂,最初使用的并不广泛。而oh-my-zsh提供了一系列很好用的配置,有了它,zsh迅速地变成了老少咸宜且十分流行的shell。

Talk is cheap, 开始正题。

第一步,先安装zsh。我们可以使用自带的apt软件包管理器简单地完成这项工作。

apt install zsh

然后直接敲两下回车即可。

第二步,安装oh-my-zsh。在终端里执行

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

提示:考虑到某股神秘力量的存在,你可能会因为网络问题在这一步失败很多次。你有两种选择,一是不停重试——反正我这样成功过;第二是去找一点正确上网的姿势,我胆小,就不赘述了,自己去搜吧。

安装完之后,它会提示你要不要把默认的shell切换成zsh,那必须的啊,回车之。

稍等片刻,你会发现提示符的样子已经变了:

➜  ssh

恭喜你!安装成功了。zsh的魅力在于主题和插件的使用,教程网上有很多,这里(因为懒)也不赘述了,去网上一搜一大把。

3. 开一个新用户

因为默认用户是root,有着系统的最高权限,而我们平常根本不需要这么高的权限,有需要的时候直接sudo就可以了。于是,创建一个日常使用的用户就显得十分重要。

在终端里执行

adduser paul

其中paul是你想创建新用户的用户名。回车之,提示你输密码

Enter new UNIX password:

输入新用户的密码,敲回车,然后会要求你再输入一次防止输错。然后就是一些个人信息的填写,都可以直接敲回车略过。所有信息输入完之后,会提示:

Is the information correct? [Y/n]

输入y,回车,一个新的用户就创建好了。然后你就可以使用这个新用户登陆服务器了。需要注意的是,ssh key是和用户对应的,而我们第一步配置的ssh key显然是给root这个用户配置的,因此对于我们创建的新用户,还需要重新配置一遍。如果你不想再搞一个新的ssh key出来,也可以将第一步中产生的id_rsa.pub里的内容填到/home/新用户名/.ssh/authorized_keys中,这样就可以直接用原来的ssh key登录了。

4. 开启ipv6

华为云的ipv6显然还处于试用阶段,权限没有默认开通,需要我们申请一下。

登陆这个网站:https://www.huaweicloud.com/solution/ipv6/,选择"IPv6-EIP立即申请",别选错了哦,选成另一个是不行的。然后它会让我们填一些信息,看着很高大上,其实瞎填就可以了。提交之后它提示要审核,但其实也不用等,实测这个审核几分钟就通过了。

权限申请到之后,下一步就是配置网络了。登录华为云控制台,选择“虚拟私有云”,

然后点击右上角的“创建虚拟私有云”,在新的页面里将下方的“开启ipv6”选上,点“立即创建”,就可以了。

然后我们还需要将服务器绑定的VPC更换成新创建的。在控制台中选择“弹性云服务器”,在“更多”中选择“切换VPC”,虚拟私有云切换成我们刚刚新创建的,确定即可。

UPDATED: 写到这里,我去查了一下文档,突然意识到——这上面是IPv6双栈的配置方式!哦...(手动捂脸

对于IPv6-EIP,不需要如此繁琐的配置,只需要打开控制台中的“弹性公网IP”,在属于我们的那个IP那一栏,选择右侧的“更多”下拉菜单,”打开IPv6转换“,然后再去”访问控制“->”安全组“中,选择我们使用的那个安全组(一般为Sys-default)的”配置规则“,在入方向规则中,选”添加规则“,协议端口写”全部放通“,源地址填”192.19.0.0/16“,确定即可。此时,我们已经可以通过IPv6地址访问服务器了。

一点吐槽

事实上,我在尝试开启IPv6的过程远比文章中艰辛。首先,在申请公测权限的时候,并没有明显地提示我应该选择IPv6-EIP或IPv6-双栈,导致我最初想当然地先申请了后者,再申请了前者...

此外,关于这个双栈的问题,按照教程来看我应该先将弹性IP绑定到共享带宽,这样VPC才能为服务器提供IPv6的访问权限;但是我未绑定,仍然为我的VPC分配了一个IPv6的网段。后来,IPv6-EIP的方法能够使用之后,服务器一直分配不到IPv6地址,但是入站使用v6没有问题;于是我又去搜索文档,发现了这么一篇:http://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0140963099.html,然而这篇问题更大,不仅没有明显的提示不适用于IPv6-EIP,在下文中ubuntu1804手动获取地址的部分直接写错了:教程里教的是在/etc/network/interface进行修改,然而华为云默认的ubuntu1804镜像使用的是netplan管理网络!

后来还遇到了不少坎坷,提了工单工程师也没法给我一个完美的答复,并且在工单中当工程师想要访问我的主机时,有一个提供权限的操作——就是将密码填入一个指定页面。然而不知为何,我填入正确的密码,这个页面验证一直不成功,工程师也说一直无法登录...

后记

华为云学生机初步折腾也就告一段落了。在折腾时的种种体验,都表明华为云还有很大的发展空间。但是,作为一家做网络通信起家的公司,我有理由相信,华为云的使用体验也是会越变越好的。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。