yokila
yokila
Published on 2023-12-24 / 19 Visits
0
0

云服务器的入门配置及SSH连接(基于华为云服务器)

一、前言

本文以华为云云耀云服务器为示例,展示如何从零开始使用云服务器(其实也是作者实况记录自己操作过程)。

当然,本文不是给华为打广告,实际上你大可以购买其他云服务商的云服务,这取决于你自己。(作者在华为云上买,仅仅是因为当时正好有折扣,更为重要的是,恰好有对应的需求才买)

本文基于的服务器实例情况

特别说明:如何挑选云服务器不在本文讨论范畴。

特别说明:作者对云服务器的使用,也是新手,本文也仅仅是入门使用,还有更多深入的内容,仍旧需要通过更多的资料和实践进行学习。

特别说明:如果仅仅是需要一个其他系统环境(通常是Linux),且不需要长时间保持稳定运行,则其实更建议在自己电脑上搭建虚拟机(毕竟不花钱)。

二、控制台

既然是购买云服务,如果你买了,那么一定是已经登录了云服务商的平台。

点击控制台,进入控制台页面。

控制台页面信息很多,但是我们可以先关注自己的云服务器实例,即图中所标的地方。

点击后,可以到达对应的页面。

再次点击云服务器实例。(如果有多个,则选择你现在要操作的实例)

其实官方已经提供了流程步骤参考。

2.1 设置密码

先点击设置/重置密码

输入新密码进行设置。

如果点击确定时,出现上面所示的提示,则需要按照提示操作。

(其实就是为了更安全)

点击远程登录

再点击右侧的重置密码

注意要勾选自动重启,不然新密码不会生效。

有可能需要你进行验证:

验证通过后,密码就设置完毕了。

2.1 配置安全组

回到服务器实例的控制台页面。

我们现在要开始第二步。

点击配置规则,进入安全组配置页面。

绑定default安全组示例

来自官方文档的关于默认安全组规则的描述:

默认安全组规则信息

官方默认提供的default安全组,如上图所示。但是默认安全组的这个配置是拒绝所有外部请求的(包括ping),需要外部访问的话,就还是必须要进行额外的规则配置。

此时,先别着急操作,看看相关资料后再动。

安全组是一个逻辑上的分组,为同一个VPC内的云服务器提供访问策略。用户可以在安全组中定义各种访问规则,当云服务器加入该安全组后,即受到这些访问规则的保护。

系统为每个网卡默认创建一个默认安全组,默认安全组的规则是对出方向上的数据报文全部放行,入方向访问受限。您可以使用默认安全组,也可以根据需要创建自定义的安全组。

——官方文档

所谓的安全组,其实就是把端口开放的规则配置,按照组的形式管理。(实际上就是云防火墙)

一个服务器的网卡,可以绑定多个安全组,如果绑定的多个安全组里有端口开放设置冲突,则依据优先级进行决策最后用哪个安全组里面的端口配置。

建议先看一下官方的相关手册:管理安全组

安全起见,你想哪些端口可以被访问,就配置开放哪些端口,其余的应该都关闭掉。

安全组配置官方示例(这里有很多常用的端口的规则配置示例):安全组配置示例

注意以下源地址配置内容:

  • IP网段:IP地址/掩码。

  • 单个IP地址:IP地址/掩码。

  • 0.0.0.0/0 表示匹配所有IPv4地址。

  • ::/0 表示匹配所有IPv6地址。

如果某个端口正常只有自己才会访问,则大可把源地址都配置成自己的公共IP地址,这样就不会被别人随便访问,也可以降低安全风险。不过,如果有些端口,例如你是拿来对外提供服务的,则只能写成 0.0.0.0/0 之类允许全部IP访问。

那么,如何查自己的公共IP地址(注意,用 ipconfig 查到的192.168.0.xxx 其实是局域网IP)

注意:公网 IP 地址分为两类:固定公网 IP动态公网 IP

注意:一般来说,现在租用宽带上网,公共IP地址都是动态的,即每次上网都分配一个IP地址,这个IP地址可能跟上次上网的IP地址相同,也可能不同,大多数情况是不同的。除非你去找运营商申请一个公共IP(不同地区政策不大一样,具体得问运营商),否则默认情况下通常都是动态的。

当前的公共IP地址实测:(bing搜索可以、360搜索可以、百度搜索不行)

直接浏览器搜索就出来IP了

一些常规的规则配置示例:

现在假设我的固定公共IP地址是:10.0.0.1/32(实际要换成你自己的公共IP地址),而且我只想让端口被自己访问。

(如果自己的IP只能是动态的,那么只好把源地址配置成IP网段或者全网)

我可以按照下图进行配置规则:

(实际可以新建一个安全组来配置这些规则,然后和default取并集,即一起绑定到网卡上)

常用端口规则示例

常用端口规则示例

注意:这里只配置了入方向,即外部访问云服务器。

安全组是有状态的。如果您从实例发送一个出站请求,且该安全组的出方向规则是放通的话,那么无论其入方向规则如何,都将允许该出站请求的响应流量流入。同理,如果该安全组的入方向规则是放通的,那无论出方向规则如何,都将允许入站请求的响应流量可以流出。

——官方文档

如果需要云服务器主动去访问外部,则也需要配置出方向(这个就自行去配置了)

安全组的出方向规则一般默认全部放通,即允许安全组内实例访问外部的所有请求出去。

可以ping任意地址

配置好以后,就可以在你本机上试一下对应端口看看能不能访问到服务器了。

以ping为例,命令: ping 124.1.0.1

(其中,假设 124.1.0.1 是服务器IP地址)

其他的端口测试就自行去测了。

特别说明:

对于云服务器,有两层防火墙,第一层即我们刚刚在云服务商提供的平台上配置的安全组,还有一层就是Linux(或者Windows)自带的防火墙。

如果你发现安全组配置了端口规则,但是依旧被拒绝访问,则可以去看看操作系统的防火墙是否开放了对应的端口。

Ubuntu查看防火墙信息(允许访问的端口信息),命令:sudo ufw status

Ubuntu允许外部访问端口(以12300为例):sudo ufw allow 12300

Ubuntu删除增加的规则(以12300为例):sudo ufw delete allow 12300

三、远程SSH连接

终于把控制台上网页上的事情处理到告一段落了(不是结束了,还有更多内容请自行探索)

3.1 云服务商提供的网页版

我不太清楚别的云服务商是否有提供相应的网页版远程登录,华为云这边是有相应功能:

实例控制台页面

点击远程登录,打开对应的远程操作网页。

远程登录管理页面

有没有发现,这个页面,上文出现过,即设置密码那里。

在中间这里,可以登录账号root,密码就是之前设置的。然后进行各种操作。

如果需要用上鼠标,则要选中左上角的这个本地鼠标

试着ping了一下百度(别用域名,因为没有配置DNS,解析不了)

ping百度

3.2 Windows OpenSSH客户端的安装

网页终究不通用,也不便捷,所以本文以Windows端为例,展示如何用工具远程连接到服务器。

首先,需要一个SSH连接工具,现在也有很多开源的免费的工具,选择很多,随便去查一下就能找到,所以这里不进行赘述。

所以,这里我要试着用一个免费的SSH工具来做示例(实际上你完全可以用和我不一样的SSH工具,毕竟原理上都差不多)

故而,本文以Windows的OpenSSH客户端为例讲解。

微软官网关于OpenSSH的文档:适用于 Windows 的 OpenSSH 入门

如果你不想去看,则下面有操作流程:

①检测是否已经安装OpenSSH客户端

先进入设置页面

在设置页面选择应用

然后选择可选功能

再检索OpenSSH客户端是否已经安装(上图是已经安装了)

②安装OpenSSH客户端

如果你在上一步里发现,没有安装OpenSSH客户端,则可以按照以下流程进行安装。

(为了展示如何安装,我特意把OpenSSH客户端给卸载了)

点击查看功能

然后检索OpenSSH客户端

勾选

点击下一步

再在新的弹窗中,点击安装

等安装好了,就行了。

(其实还有利用powershell命令的方式进行安装的途径,但是不如这种图形界面的途径简便,所以没有展示,如果有需要则可以阅读前面提供的官方文档)

3.3 OpenSSH客户端的使用

注意:远程SSH连接服务器,需要服务器开放22端口允许访问。

在Windows系统中,按下快捷键Win + R,输入cmd,按下回车(或者点击确定

在打开的控制台中,输入ssh

现在,输入 ssh 用户名@服务器地址,例如 ssh root@125.125.2.2,按下回车键

可以看到一段提示,如果输入yes,则系统会将该服务器添加到包含 Windows 客户端上的已知 SSH 主机的列表中。

添加后,可能连接会被关闭掉。

如果被关闭了,就再输入一次ssh 用户名@服务器地址,例如 ssh root@125.125.2.2,按下回车键

此时,系统会提示输入密码。 作为安全预防措施,密码在键入的过程中不会显示。

密码输入正确,则会如下图所示。

现在你就可以开始进行服务器上的操作了。

比如,ping一下百度的IP地址

ping百度

退出命令:exit

示例

3.4 解决OpenSSH自动断开连接问题

当实际利用OpenSSH客户端操作时,你会发现,过一段时间SSH连接就会自动断开(实测我这台服务器,5分钟不操作就会断掉,仅限我这个服务器)。

这主要是防火墙以为SSH连接已经不活跃了,所以直接把连接干掉。

那么,我们要做的,就是让SSH连接保持活跃。

解决方式有三种:

  • 一种是改服务端sshd配置

  • 另一种是改客户端ssh配置

  • 还有一种是在ssh的命令参数中加配置

其实意思都一样,就是要有一方在那里始终活跃,避免连接被判定不活跃,然后被干掉。(还有一种小题大做的,就是去改防火墙配置,本文不讨论)

建议补充阅读文章:

3.4.1 改服务端sshd配置

不是很推荐,但是这里提供操作方式。

此处操作内容来自于华为云官方文档(未进行实践):怎样长时间保持SSH会话连接不断开?

步骤① 编辑/etc/ssh/sshd_config文件

步骤② 添加配置项:

ClientAliveInterval 60
ClientAliveCountMax 10

步骤③ 重启sshd服务,使配置生效

执行命令:systemctl restart sshd

说明:

ClientAliveInterval 设置超时间隔(以秒为单位),在此间隔之后,如果尚未从客户端接收到任何数据,则sshd将通过加密的通道发送消息以请求客户端的响应。默认值为0,表示这些消息将不会发送到客户端。(其实就是多久发送一次消息,成功交互,就让连接保持活跃)(这个时间一定要设置得比防火墙以为SSH空闲的时间阈值小,不然就没意义了)

ClientAliveCountMax 设置客户端活动消息的数量,该消息可以在sshd接收不到来自客户端的任何消息的情况下发送。如果在发送客户端活动消息时达到此阈值,则sshd将断开客户端连接,从而终止会话。(ClientAliveInterval 的保持活跃的交互失败时,最大连续尝试连接次数)

3.4.2 客户端做配置

注:本文实际为给OpenSSH Client增加配置

步骤① 到达OpenSSH的默认配置文件路径:C:\ProgramData\ssh

步骤② 如果在ssh文件夹下,无配置文件,就新建配置文件 ssh_config

如果你发现你只能创建文件夹,而无法创建文件,那就对了,因为当您在Windows 11上打开文件资源管理器时,默认情况下,它以标准特权打开,此时你的权限不够操作。

(如果你实践时发现已经有权限操作,就不需要额外进行下面描述的配置权限的行为)

所以,我们现在要做的就是让自己先有这个权限(有两种方式,一种是以管理员权限操作文件夹,一个是暂时给普通用户提供权限)。

这里展示的是暂时给普通用户提供权限的方式。

在ssh文件夹中,点击鼠标右键,选择属性,再在属性页面里选择安全

选择Authenticated Users,然后点击编辑

勾选写入,点击确定

此时已经具备权限了,所以继续创建文件 ssh_config

保存时会提示说需要提供管理员权限,那就点击继续,提供对应权限。

创建文件后的文件夹

编辑 ssh_config 文件

添加配置:

ServerAliveInterval 60      
ServerAliveCountMax 3

说明:

ServerAliveInterval 设置超时间隔(以秒为单位),在此间隔之后,如果尚未从服务端接收到任何数据,则ssh将通过加密的通道发送消息以请求服务端的响应。默认值为0,表示这些消息将不会发送到服务端。(其实就是多久发送一次消息,成功交互,就让连接保持活跃)(这个时间一定要设置得比防火墙以为SSH空闲的时间阈值小,不然就没意义了)

ServerAliveCountMax 设置活动消息的数量。如果在发送服务端活动消息时达到此阈值,则ssh将断开连接,从而终止会话。(ServerAliveInterval 保持活跃的交互失败时,最大连续尝试连接次数)

添加配置后记得保存。

录入值后

此时,再建立的新的SSH连接就不会自动断掉了(如果客户端和服务器一直是通的话)

别忘了,可以按照上面修改文件夹权限的步骤,把普通用户的写入权限取消掉。

3.4.3 命令中添加参数

注:这种方式其实就是临时给一个会话设置这个不会自动断连的效果

ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3  root@服务器IP

示例

此时的SSH连接也不会自动断掉(如果客户端和服务器一直是通的话)

3.5 传输文件

scp(Secure Copy Protocol)是基于 SSH 的安全文件传输命令,用于在本地和远程服务器之间加密传输文件或目录。

3.5.1 本地传服务器

格式:scp -P 端口号 /本地/文件 用户名@远程IP:/远程/目录/

示例:

scp -P 22 .\client.crt pai@192.168.0.199:/tmp

释义:将当前目录的 client.crt 文件上传到 192.168.0.199 地址服务器上的 /tmp 目录,通过 22 端口,使用 pai 用户。

QQ20250414-220324.png

3.5.2 服务器传本地

格式:scp -P 端口号 用户名@远程IP:/远程/目录/文件 /本地目录

示例:

QQ20250414-220725.png


更多的操作,靠你自己去探索了。。。


Comment