去年在阿里云上购买了第一台云服务器作为个人学习使用。在这台服务器上,我实践了linux系统操作、mysql、mongodb、docker、jenkins、node等各种好用的技能,受益匪浅。
可惜当时不知道 新人专享 的优惠福利,只买了1年的有效期,直到续费时看到那个费用才追悔莫及。噫吁嚱,悔乎迟矣!😭
一、服务器选购
阿里云的服务器到期之后,我开始转战腾讯云。因为我的腾讯云还没注册过,可以享受新人优惠。
这一次我果断选了服务器3年的有效期,注册账号后,实名认证。新人第一次购买打骨折,配置是1核2G,系统环境选的是centOS 7.6。
因此:
以下所有的配置都是基于centOS 7.6系统环境下的。
服务器购买成功后,我们先进行第一次登陆。
控制台里选择购买的实例,进去后重置密码,然后重启服务器。
因为云服务器一般均会预装好 ssh
服务,所以可以直接用终端连接:
ssh -p 22 root@ip
其中root指默认管理员用户,ip则是该服务器的公网ip,因为默认ssh端口就是22,可以省略-p 22
:
ssh root@ip
提示输入完密码,输完后即可登录上这台服务器啦。(上车上车)
注:登录服务器需要使用到
ssh
协议,如果是Mac
用户,默认的terminal
终端即可支持,而Windows
用户可以安装Git for Windows
来进行操作。
二、开启防火墙和配置安全组
新购的服务器怎么能没有防火墙呢?于是第一步就是查看防火墙的状态:
systemctl status firewalld
发现是Active: inactive (dead),于是开启防火墙服务,并设置开启自启动
# 启动防火墙
systemctl start firewalld
# 设置开机启动防火墙
systemctl enable firewalld
再次查看状态就显示Active: active (running) 啦
常用的防火墙相关命令如下:
systemctl status firewalld # 查看防火墙服务状态
systemctl start firewalld # 启动防火墙服务
systemctl stop firewalld # 关闭防火墙服务
systemctl restart firewalld # 重启防火墙服务
systemctl enable firewalld # 开机自启防火墙服务
systemctl disable firewalld # 禁止自启防火墙服务
# 防火墙新增开放一个端口号
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 开放多个端口:
firewall-cmd --zone=public --add-port=80-90/tcp --permanent
# 删除一个端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
# –-zone #作用域
# –-add-port=80/tcp #添加端口,格式为:端口/通讯协议
# --remove-port=80/tcp #移除端口,格式为:端口/通讯协议
# –-permanent 永久生效,没有此参数重启后失效
# 查看防火墙相关信息,包括添加的端口
firewall-cmd --list-all
# 在不改变状态的条件下重新加载防火墙(注:修改了防火墙端口后,需要重载服务)
firewall-cmd --reload
开启了服务器内的防火墙服务,还需要在实例中配置安全组规则。
安全组是一种虚拟防火墙,具备有状态的数据包过滤功能,用于设置云服务器、负载均衡、云数据库等实例的网络访问控制,控制实例级别的出入流量,是重要的网络安全隔离手段。
您可以通过配置安全组规则,允许或禁止安全组内的实例的出流量和入流量。
简单的说,安全组就是在外面再加一层防火墙,只有内外“两个防火墙”的端口都开放了,那个端口才能被访问。
默认的安全组规则是开放所有端口,这是相对不安全的,因此我们创建一个新的安全组,只设置我们需要暴露出去的几个端口,然后将新创建的安全组绑定到服务器实例上,并取消默认安全组的绑定。
三、修改主机名
作为一个强迫症患者,进去后主机名那一连串随机字符简直不能忍,于是开启防火墙之后,第二件事就是修改主机名。
注:主机名最好用连续的小写字母,因为任何特殊字符或空白字符会被移除,而提供的参数中的任何大写字母会自动转化为小写。
-
临时修改
使用命令行修改 hostname 主机名(可自定义),如
hostname myHostName
,重新登录 shell 生效。注:此命令只是暂时的修改linux的主机名,它的存活时间为linux当前的运行时间,即在下一次服务器重启前的运行时间内。
-
永久修改
如果是 CentOS 7 操作系统,可以使用命令hostnamectl set-hostname 主机名 来修改,修改完毕后重新 SHELL 登录即可。如:
hostnamectl set-hostname myHostName
如果是 Ubuntu 系统,则需要修改文件 /etc/hostname, 将其对应的主机名修改为新的主机名。
修改完成后,再次登陆进去,即可看到主机名已修改啦。
四、修改ssh默认端口
ssh是安全的加密协议,默认端口是22 ssh -p 22 root@ip
,不写可以省略,但是默认22端口不安全,因此我们需要修改ssh默认端口。
vim /etc/ssh/sshd_config
# 注:vim是linux系统里的常用编辑器,具体文件的创建、修改、删除等操作自行查阅了解。
要注意是编辑文件名为sshd_config,是指sshd服务的配置,而不是ssh_config。
进入到文件里后找到里面的 # Port 22
将 # Port 22 前面的 # 去掉,后面22端口改成自定义端口,如: Port 10022
建议Port 22同时保留,防止修改失误后无法远程连接服务器,修改成功后再注释去掉22。
保存退出vim界面,重启服务。
注意:在修改ssh默认端口前,要先去设置防火墙 + 云服务器的安全组规则,开放你所设置的端口,然后再去改配置文件。
去安全组里添加规则,添加一个10022端口,具体详见服务器提供商文档。
然后登陆云服务器,查询该端口是否被占用:
firewall-cmd --permanent --query-port=10022/tcp
如果是no,就添加一下,成功后重载防火墙:
firewall-cmd --zone=public --add-port=10022/tcp --permanent firewall-cmd --reload
修改了ssh端口 还要告诉SElinux做了改变。也就是sshd_config文件里的这个提示:
SELinux是linux系统里的一个安全模块,想要了解的可自行查阅。
于是运行:
semanage port -a -t ssh_port_t -p tcp 10022
如果提示没有semanage命令,那么可进行如下操作:
# 查找semanage是通过哪个安装包来提供的
yum whatprovides semanage
# 查找完成后 运行安装
yum install /*上面查出来的包名*/
安装完成后,再次运行
semanage port -a -t ssh_port_t -p tcp 10022
# 查看是否设置成功
semanage port -l | grep ssh
最后重启服务即可修改成功,退出后用新端口重新登录。
然后去除上面的22端口:
# 防火墙去除
firewall-cmd --zone=public --remove-port=22/tcp --permanent
# SElinux去除
semanage port -d -t ssh_port_t -p tcp 22
# 重启防火墙服务
systemctl restart firewalld
五、ssh密钥登陆
登陆云服务器的方式其实有很多种,比如通过账号密码/密钥的命令行登陆、通过安装图形化工具进行图形化登陆、通过控制台实例里的远程连接登陆。
但是相对来说,最常用的还是ssh命令行登陆方式。
其中通过ssh root@ip
账号/密码登陆,每次连接都要输入用户、ip和登陆密码,比较麻烦,并不适合常年都是在自己电脑上使用的场景,它更适合需要切换设备、在多个不同的地方登陆访问的场景,因此我们这里主要配置便捷的密钥登陆。
创建密钥主要有两种方式:
-
云服务器控制台里直接创建密钥对。
-
自己通过ssh-keygen生成密钥对。
两种方式实现效果都一样,这里介绍第一种最简单的方式创建:
创建成功后,会自动下载密钥.pem文件到电脑上,这里将.pem私钥文件放在~/.ssh/下,修改权限:
chmod 400 ~/.ssh/你的私钥文件
接着在.ssh/里的config进行配置:
vim ~/.ssh/config
# 在该文件里编辑如下
Host test # 这里test是别名,等会你就可以直接 “ssh test” 就能登陆服务器了
HostName 121.199.57.149 # 这里是你的服务器ip
Port 10022 # 你的服务器ssh端口
User root # 登录用户
IdentityFile ~/.ssh/ali_ecs_study.pem # 私钥地址
修改成功后保存,这样服务器端就有了公钥(公钥要绑定到你的服务器实例上),客户端上就有了私钥,相当于双端互留了电话号码,接着直接连接即可登录了:
ssh test
注:如果配置了密钥登陆,设置里会默认关闭密码登录。如果你要同时可以密钥登录或者密码登录,重置下实例密码即可。