时效性
本篇撰写时间为2021.11.14,由于计算机技术日新月异,博客中所有内容都有时效和版本限制,具体做法不一定总行得通,链接可能改动失效,各种软件的用法可能有修改。但是其中透露的思想往往是值得学习的。
Windows 10家庭中文版,版本20H2,操作系统内部版本19042.1288
本篇前置:

  • 一个有云服务器的小组。或者自己去租个便宜的学生用云服务器(上知乎应该有推荐)

准备服务器

瞻仰服务器

组里大手笔给了个服务器用。
https://www.ksyun.com/
登录账号,右上角点击“控制台”
我们组用的是裸金属服务器(即物理机),左侧找到相应按钮(额,这个好像真的藏得比较深)
image
看到组里的服务器一台!
image
在右上角“文档”处点击,弹出文档窗口,可查询使用方法
image

弹性IP

文档中,第二步要求绑定弹性IP。弹性IP的概念和用途参见:https://www.ksyun.com/developer/article/6959.html
在左侧找到相应按钮
image
新建弹性IP,按流程进行。(相应具体购买流程细节等属于学院财政范畴)
image
现在我们的服务器有外网IP地址了。
image

重装系统、SSH密钥设置

我们打开用户指南pdf(这样就不需要再小弹窗里看文档了)
http://ks3-cn-beijing.ksyun.com/fe-frame/project/document/2640.pdf

  • 重装系统。按照用户指南“重装操作系统”节。除了选择系统镜像Ubuntu 18.04和SSH密钥对之外,其余按默认即可。(当然也可根据任务具体情况,改RAID设置提高效率)
    • 注意选择密钥对前确保组内有人拿着对应私钥。
    • 如果没有合适的密钥,需要参考“SSH密钥管理”一节创建和管理密钥。
    • 小Tips:不建议用微信传私钥,因为微信令人不放心。毕竟有时连个歌功颂德的ppt都会被河蟹……说明微信会监控内容。

网络配置

image
左侧菜单选择“虚拟私有网络”,可以看到组内服务器的网络配置情况。
目前我们小组用的裸金属服务器在整个大组的虚拟私有网络中,因此可以使用内网IP和处于同一VPC的其它服务器内网互访,产生流量不收取费用。
接下来选择安全组。
image
关于安全组的文档:https://docs.ksyun.com/documents/70
我们尝试改变我们裸金属服务器的安全组(由于系统限制,某服务器不能不属于任何安全组,但可以属于多个安全组。因此更改时可以先添加再移除,但不能先移除再添加)
image
改到默认安全组。该组入站规则为0条,所以一会就能看到其效果(不允许入)

ssh连接

ssh连接工具:MobaXterm

ssh连接有许多工具,对于Windows系统,MobaXterm为其中不错的。
https://mobaxterm.mobatek.net/download-home-edition.html
甚至有绿色免安装版,下载解压就能用。
时效性:使用版本:MobaXterm_Portable_v21.4(不同版本设置的位置可能不同等)
image

修改安全组设置

复制裸金属服务器外网ip,输入ssh root@,并中键粘贴,尝试连接。结果被防火墙拦住了。
注:金山云安全组“管理裸金属服务器”,以及很多地方显示的都是内网IP. 每次连接,请一定先确认输入的是不是外网IP!
甚至ping 该ip也不行。这就体现安全组的作用了。
我们尝试复制之前的默认安全组,并增加一条入站规则:ICMP ping. 把我们的服务器改到该安全组。
image
这时ping有输出。
image
我们再增加一条入站规则:TCS ssh(即22端口),ssh root@<公网IP>
image

添加私钥

上面报错说明需要添加私钥。我们打开MobaXterm上方菜单Settings - Configuration - SSH,勾选Use internal SSH agent "MobAgent",按加号添加私钥,按下方OK,然后按提示重启MobaXterm
再回到刚刚设置界面,再点下方Show keys currently...,确认MobAgent正在运行且在使用这个私钥。
image
重新Start local terminal,ssh root@<公网IP>
image
发现我们成功ssh登上了

总结和问答练习

  1. Q: 为什么裸金属服务器在菜单中比云服务器藏得深?
    A: 云服务器是“传统业务”,裸金属服务器属于“特别业务”。并不“典型”。

租用的计算资源,大部分都不是物理资源,而是虚拟资源。
为什么在全面云化的大背景下,还要“开倒车”,提供物理服务器呢?
虚拟化并不是完美无缺的。它有两个无法回避的缺陷:性能损失和嘈杂邻居效应。
对于一般企业而言,云服务器便能满足他们的需求。
裸金属服务器从2014年开始出现,发展时间并不算很长。(摘自知乎用户@蔚可云)

这样看来租个裸金属服务器炼丹似乎有点浪费了。

  1. Q: 如何理解Permanently added <公网IP> (RSA) to the list of known hosts.
    A: 找到MobaXterm使用的home文件夹(根据你的设置不同,可能是某个临时文件夹或者C:\Users\<用户名>\等。可以通过Settings - Configuration - General看到)
    记事本打开该文件夹下属的/.ssh/known_hosts文件,看到一行内容,开头是服务器公网IP,后面是公钥。
    连接服务器的过程中,有双向验证过程。
    为了验证服务器的身份,你需要保存一段公钥(这就是所谓的Permanently added),服务器保存私钥,并由服务器私钥“配对”你的公钥。
    为了验证你的身份,服务器需要保存一段公钥,你保存私钥(即我们添加到MobaXterm的),并由你的私钥“配对”服务器的公钥。
    具体“配对”过程是(以一侧为例)
  • 本地向远程服务端发起连接
  • 服务端随机生成一个字符串发送给发起登录的本地端
  • 本地对该字符串使用私钥(~/.ssh/id_rsa)加密发送给服务端(注意我们这里本地的~是MobaXterm管理的所谓MobAgent对应的某个文件夹,并不能在C:\Users\<用户名>下显式看到)
  • 服务端使用公钥(~/.ssh/id_rsa.pub)对私钥加密后的字符串进行解密
  • 服务端对比解密后的字符串和第一次发送给客户端未加密的字符串,若一致则判断为登录成功

注:我们登上服务器后,到/root/.ssh/查看authorized_keys里面的公钥。可以看到,里面的文本内容末尾就是我们在金山云重装系统时选择的密钥对名称。这个文件的“地位”对等于我们本地的/.ssh/known_hosts.