当前位置: 首页 > news >正文

如何正确配置 Ubuntu 14.04 服务器?

推荐理由:

许多个人开发者在云服务器上搭建网站时,喜欢使用 Ubuntu 操作系统;那么在云厂商购买 了Ubuntu 服务器之后,如何确保服务器的安全,以及如何正确配置它,我觉得这点很关键;而我今天推荐的这篇文章,就介绍了在购买 Ubuntu 服务器之后,为了确保服务器的安全,开发者应该要做的一些配置,希望对大家有所帮助。

以下为文章原文:
在云服务器上搭建网站时,许多个人开发者喜欢使用 Ubuntu 操作系统。据 W3C 的一项调查,Ubuntu 占据了网站服务器市场的 13.4%,而且还在呈上升趋势。由于其较高的使用率,腾讯云等云计算厂商均提供了 Ubuntu 操作系统的镜像。

本文将介绍在云厂商购买 Ubuntu 服务器之后,为了确保服务器的安全,开发者应该要做的一些配置。完成本文的操作之后,服务器的安全性将得到更好的保障。

新建云服务器实例

在开始配置之前,我们先新建一个云服务器实例。新用户可领取免费代金券,获得1个月左右的免费使用时间。如果已经使用代金券,可考虑使用笔者的推荐链接来购买服务器。

这里,我们选择计费模式选择为「包年包月」。对于需要长期运行的网站应用来说,包年包月的模式还是比较划算的。机型选择标准型S1中最低配,即 1核CPU、1GB 内存。
图片描述

图片描述

选择存储与网络时,建议将系统盘选择为云硬盘,除了可以获得免费赠送的空间之外,还方便以后根据需求升级 CVM 的 CPU 和内存。其他的使用默认设置即可。
图片描述

接下来需要设置一些 CVM 相关的信息,如主机名和登陆密码。一开始,你的账号下只有默认项目,
图片描述

如果你不希望手动设置密码,可以选择「自动生成密码」,腾讯云会向你的注册邮箱发送相关登陆信息。安全组暂时选择为默认安全组,将暴露所有端口到公网和内网。

root 登陆

在登陆刚启动的 CVM 实例之前,我们需要知道服务器的公网 IP,以及 root 用户的密码。如果你选择的是自动生成密码,那么请查看邮箱。接下来,我们在本地使用如下命令登陆到服务器。

$ ssh root@qcloud-cvm-ip # 请将 qcloud-cvm-ip 替换为实际 IP

按照提示进行操作,输入 root 用户验证所需的密码(可以从腾讯云发送的邮件中找到)。如果这是你第一次使用密码登陆服务器,登陆成功后系统还会提示你更换 root 密码。

root 用户

root 用户是 Linux 环境下的超级管理用户,拥有非常大的权限。由于 root 用户权限过大,不建议大家日常使用 root 账号进行服务器操作。因为有可能会出现让你加班、甚至被开除的意外。

因此,我们接下来创建一个新的用户账号,在日常工作中使用。

创建新用户

以 root 账号登陆服务器之后,我们就可以添加以后经常使用的用户账号了。本文中,我们将创建一个名为 demo 的新用户,你可以根据自己的情况选择合适的用户名。

$ adduser demo

系统会要求你回答一些问题,最重要的就是设置该用户的密码。对于其他问题,并不是必须的,可以直接按回车键完成。

添加 root 权限

现在 demo 用户还只是一名普通用户,不具备系统管理权限。我们需要为该用户添加 root 权限。这样,就可以在每个命令前加上 sudo 以管理员权限执行了。

安装 sudo

由于 Debian 8 系统默认没有安装 sudo 包,因此我们先通过 apt-get 安装。

首先,更新 apt 包目录:

$ apt-get update

然后使用下面的命令安装 sudo:

$ apt-get install sudo

现在可以使用 sudo 和 visudo 命令了。

赋予 sudo 权限

为了给新用户添加管理权限,我们需要把新用户添加到 sudo 用户组。Ubuntu 操作系统中,属于 sudo 用户组的用户默认可以使用 sudo 命令。

在 root 用户下 ,运行如下命令,将 demo 用户添加到 sudo 用户组:

$ usermod -a -G sudo demo

上面的命令中,-a 选项指的是将用户添加到对应的用户组中,只能配合 -G 选项一起使用。-G 后可以指定多个用户组名称。如 $ usermod -a -G sudo, wwww-data。

添加公钥验证

推荐给新用户添加公钥验证,一来可以避免每次登陆时都要输入密码,二来需要私钥才能登陆可以提高安全性。

生成密钥对

如果没有现成的 SSH 密钥对(由公钥和私钥组成),很容易就可以生成。只需要在本地机器上输入如下命令即可:

ssh-keygen

假如本地用户的名称为 demo,接下来应该会看到如下输出:

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/demo/.ssh/id_rsa):
如果你以前没有生成过密钥对,按回车接受默认设置即可。如果有旧的密钥对的话,这样会覆盖以前的密钥对,建议更改为别的文件名。系统还会提示输入口令(passphrase),为了简单起见,我们直接回车使用空口令。如果你输入了口令的话,那么在 SSH 登陆时,除了需要提供密钥之外,还需要输入口令才能登陆。

命令运行结束后,会在本地用户的根目录中的 .ssh 目录下创建一个私钥 id_rsa 和一个公钥 id_rsa.pub。记得别公开分享你自己的私钥。

复制公钥

赋值公钥有两种方法,一是通过 sshh-copy-id 脚本自动赋值到远程用户,二是手动安装。

ssh-copy-id 脚本
如果本地机器上安装了 ssh-copy-id 脚本,那么就可以使用该脚本将公钥安装到任何有登陆权限的用户。

运行该脚本,同时指定用户名和服务器的 IP 地址:

$ ssh-copy-id demo@qcloud-cvm-ip

按提示输入登陆密码后,你刚才生成的公钥就会自动赋值到远程用户的 .ssh/authorized_keys 文件中。接下来就可以使用对应的私钥登陆服务器了。

手动安装公钥

使用如下命令打印你刚刚生成的公钥(id_rsa.pub:

$ cat ~/.ssh/id_rsa.pub

打印出来的公钥大致应该是这样子的:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBGTO0tsVejssuaYR5R3Y/i73SppJAhme1dH7W2c47d4gOqB4izP0+fRLfvbz/tnXFz4iOP/H6eCV05hqUhF+KYRxt9Y8tVMrpDZR2l75o6+xSbUOMu6xN+uVF0T9XzKcxmzTmnV7Na5up3QM3DoSRYX/EP3utr2+zAqpJIfKPLdA74w7g56oYWI9blpnpzxkEd3edVJOivUkpZ4JoenWManvIaSdMTJXMy3MtlQhva+j9CgguyVbUkdzK9KKEuah+pFZvaugtebsU+bllPTB0nlXGIJk98Ie9ZtxuY3nCKneB+KjKiXrAvXUPCI9mWkYS/1rggpFmu3HbXBnWSUdf demo@Windows.local

然后,以新用户身份登陆服务器:

$ ssh demo@qcloud-cvm-ip

登陆成功后,应该会进入该用户的根目录。接下来创建一个叫 .ssh 的新目录,然后使用如下命令限制目录权限:

mkdir .ssh
chmod 700 .ssh
700 表示只有目录的所有者才能读、写和执行。

现在使用 Vim 文本编辑器在 .ssh 目录下创建一个名为 authorized_keys 的文件。

$ vim .ssh/authorized_keys

在 Vim 中按 i 进入插入模式,然后 Ctrl + v 粘贴之前赋值的公钥。然后按 Esc 回到正常模式,在英文输入法下键入 :wq 保存并退出文件。

并使用如下命令限制文件的权限:

chmod 600 .ssh/authorized_keys

600 表示文件所有者可读、可写。

之后,你就可以使用私钥验证登陆服务器了,不必重复输入密码。

禁用 root 登陆

在开始配置服务器的时候 ,我们提到了最好不用使用 root 账号登陆服务器。为了确保不会出现这种情况,我们可以修改 SSH daemon 的配置,禁止远程登陆值 root 账号。

以上面配置的管理员用户身份,使用 sudo 命令打开配置文件:

$ sudo vim /etc/ssh/sshd_config

如果想禁止远程 root 登陆,找到下面这行文本:

PermitRootLogin yes

将其修改为

PermitRootLogin no

并保存文件。由于我们已经创建了一个管理用户,而且可以视情况增加权限,禁止 root 账号登陆反而可以让服务器更加安全。

最后,只需要重启 SSH 服务即可让新配置生效。

$ systemctl restart ssh

本地配置 SSH

完成以上配置之后, 以后我们每次只需要 ssh demo@qcloud-cvm-ip 即可登陆服务器。

不过这样还是有点麻烦,每次都得输入用户名和 IP 地址。为了进一步简化操作,我们对本地的 SSH 登陆进行配置。

打开 ~/.ssh/config 文件,然后添加如下配置:

Host qcloud
Hostname qcloud-cvm-ip
User demo
IdentityFile ~/.ssh/id_rsa
之后,只需要执行 ssh qcloud 即可登陆服务器。

文章出自腾讯云技术社区

(埋文字链https://www.qcloud.com/commun...)

推荐大家关注腾讯云技术社区微信公众号:QcloudCommunity

图片描述

相关文章:

  • JDK 6和JDK 7中的substring()方法
  • 使用事件和消息队列实现分布式事务(转+补充)
  • JFinal极速开发框架使用笔记(三) 分析Model和ActiveRecord
  • 3138 栈练习2
  • innerHTML、html('')与empty在IE上不同的区别
  • 配置tomcat监听80端口、配置tomcat虚拟机、tomcat日志
  • 关于Docker的一些常识
  • linux下tar、zip 压缩文件不带文件路径
  • 【Amaple教程】5. 插件
  • 数值的整数次方
  • 编写高质量iOS与OS X代码的52个有效方法(二)
  • LAMP下安装zabbix流水
  • Redis进阶实践之六Redis Desktop Manager连接Windows和Linux系统上的Redis服务
  • 自适应滤波:最小均方误差滤波器(LMS、NLMS)
  • JVM笔记
  • 《剑指offer》分解让复杂问题更简单
  • 2017年终总结、随想
  • Django 博客开发教程 16 - 统计文章阅读量
  • JavaScript的使用你知道几种?(上)
  • jquery cookie
  • Js基础知识(一) - 变量
  • Laravel 菜鸟晋级之路
  • leetcode386. Lexicographical Numbers
  • markdown编辑器简评
  • mysql 5.6 原生Online DDL解析
  • PHP 的 SAPI 是个什么东西
  • SpringBoot几种定时任务的实现方式
  • vagrant 添加本地 box 安装 laravel homestead
  • webpack入门学习手记(二)
  • 精彩代码 vue.js
  • 两列自适应布局方案整理
  • 前端临床手札——文件上传
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 原生 js 实现移动端 Touch 滑动反弹
  • 正则与JS中的正则
  • 阿里云服务器如何修改远程端口?
  • 阿里云重庆大学大数据训练营落地分享
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​人工智能书单(数学基础篇)
  • ​用户画像从0到100的构建思路
  • # 计算机视觉入门
  • $$$$GB2312-80区位编码表$$$$
  • (06)Hive——正则表达式
  • (javascript)再说document.body.scrollTop的使用问题
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (接口封装)
  • (离散数学)逻辑连接词
  • (算法二)滑动窗口
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)大道至简,职场上做人做事做管理
  • (转)母版页和相对路径