前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用Debian 9进行初始服务器设置

使用Debian 9进行初始服务器设置

原创
作者头像
八十岁的背影
修改于 2018-10-29 09:25:16
修改于 2018-10-29 09:25:16
5.9K00
代码可运行
举报
运行总次数:0
代码可运行

介绍

当您第一次创建新的Debian 9服务器时,您应该尽早采取一些配置步骤作为基本设置的一部分。这将提高服务器的安全性和可用性,并为后续操作奠定坚实的基础。

要完成本教程,您需要具备一台已经设置好可以使用sudo命令的非root账号的Debian服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

第一步 - 以Root身份登录

要登录服务器,您需要知道服务器的公共IP地址。您还需要密码,或者,如果您安装了用于身份验证的SSH密钥,则需要root用户帐户的私钥。

如果尚未连接到服务器,请继续使用以下命令以root用户身份登录(将命令的突出显示部分替换为服务器的公共IP地址):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ssh root@your_server_ip

如果出现,请接受有关主机真实性的警告。如果使用密码身份验证,请提供root密码以进行登录。如果使用受密码保护的SSH密钥,则可能会在每次会话时首次使用密钥时提示您输入密码。如果这是您第一次使用密码登录服务器,则可能还会提示您更改root密码。

关于Root

用户是在具有非常广泛的特权Linux环境中管理用户。由于root帐户的权限提高,因此不鼓励您定期使用它。这是因为root帐户固有的部分权力是即使偶然也能进行非常具有破坏性的变更的能力。

下一步是设置一个替代用户帐户,减少日常工作的影响范围。我们将教您如何在需要时获得更多特权。

第二步 - 创建新用户

root用户身份登录后,我们准备添加从现在开始用于登录的新用户帐户。

注意:在某些环境中,默认情况下可能会安装一个名为unscd的软件包,以加快对LDAP等名称服务器的请求。Debian中当前可用的最新版本包含一个错误,该错误会导致某些命令(如下面的adduser命令)生成如下所示的其他输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sent invalidate(passwd) request, exiting
sent invalidate(group) request, exiting

这些消息是无害的,但是如果您希望避免它们,如果您不打算使用LDAP等系统获取用户信息,则可以安全地删除unscd包:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apt remove unscd

此示例创建一个名为sammy的新用户,但您应该使用您喜欢的用户名替换它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
adduser sammy

从帐户密码开始,您将被问到几个问题。

输入一个强密码,如果您愿意,还可以选择填写任何其他信息。这不是必需的,您只需点击ENTER要跳过的任何字段即可。

第三步 - 授予管理权限

现在,我们有一个具有常规帐户权限的新用户帐户。但是,我们有时可能需要执行管理任务。

为了避免必须退出普通用户并以root帐户身份重新登录,我们可以为普通帐户设置所谓的“超级用户”或root权限。这将允许普通用户通过在每个命令之前放置sudo单词来运行具有管理权限的命令。

要将这些权限添加到新用户,我们需要将新用户添加到sudo组。默认情况下,在Debian 9上,允许属于sudo组的用户使用该sudo命令。

root身份运行此命令,将新用户添加到sudo组(用新用户替换突出显示的单词):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
usermod -aG sudo sammy

现在,以普通用户身份登录后,您可以在命令之前键入sudo以执行具有超级用户权限的操作。

第四步 - 设置基本防火墙

Debian服务器可以使用防火墙来确保只允许与某些服务的连接。虽然默认情况下安装了iptables防火墙,但Debian并不强烈推荐任何特定的防火墙。在本指南中,我们将安装和使用UFW防火墙来帮助设置策略和管理异常。

我们可以使用apt包管理器来安装UFW。更新本地索引以检索有关可用包的最新信息,然后键入以下命令安装防火墙:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apt update
apt install ufw

注意:我们建议一次只使用一个防火墙,以避免可能难以调试的冲突规则。

防火墙配置文件允许UFW按名称管理应用程序的防火墙规则集。默认情况下,某些常用软件的配置文件与UFW捆绑在一起,并且软件包可以在安装过程中向UFW注册其他配置文件。OpenSSH,即允许我们现在连接到我们服务器的服务,具有我们可以使用的防火墙配置文件。

你可以输入以下内容来看到:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ufw app list
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Available applications:
  . . .
  OpenSSH
  . . .

我们需要确保防火墙允许SSH连接,以便我们可以在下次重新登录。我们可以输入以下内容来允许这些连

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ufw allow OpenSSH

之后,我们可以输入以下命令启用防火墙:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ufw enable

输入“ y”然后按ENTER继续。您可以通过键入以下内容来查看SSH连接:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ufw status
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Status: active
​
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

由于防火墙当前阻止除SSH之外的所有连接,因此如果您安装和配置其他服务,则需要调整防火墙设置以允许可接受的流量。

第五步 - 为普通用户启用外部访问

现在我们有一个日常使用的常规用户,我们需要确保我们可以直接SSH到帐户。

注意:在验证您是否可以登录并与新用户一起使用sudo之前,我们建议您以root用户身份登录。这样,如果您遇到问题,可以进行故障排除并以root身份进行必要的更改。

为新用户配置SSH访问的过程取决于服务器的root帐户是使用密码还是使用SSH密钥进行身份验证。

如果Root帐户使用密码身份验证

如果使用密码登录到root帐户,则会为SSH启用密码身份验证。您可以通过打开新的终端会话并使用SSH和新用户名来SSH到新用户帐户:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ssh sammy@your_server_ip

输入常规用户密码后,您将登录。请记住,如果您需要运行具有管理权限的命令,请在此之前键入sudo

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo command_to_run

每次会话(以及之后的第一次)使用sudo时,系统将提示您输入常规用户密码。

为了增强服务器的安全性,我们强烈建议您设置SSH密钥而不是使用密码身份验证

如果Root帐户使用SSH密钥身份验证

如果使用SSH密钥登录到root帐户,则会禁用 SSH的密码身份验证。您需要将本地公钥的副本添加到新用户的~/.ssh/authorized_keys文件中才能成功登录。

由于您的公钥已经位于服务器上的root帐户~/.ssh/authorized_keys文件中,因此我们可以使用该cp命令将该文件和目录结构复制到现有会话中的新用户帐户。之后,我们可以使用chown命令调整文件的所有权。

确保更改以下命令的突出显示部分以匹配您的常规用户名称:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cp -r ~/.ssh /home/sammy
chown -R sammy:sammy /home/sammy/.ssh

现在,打开一个新的终端会话并使用SSH和您的新用户名:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ssh sammy@your_server_ip

您应该在不使用密码的情况下登录到新用户帐户。请记住,如果您需要运行具有管理权限的命令,请在此之前键入sudo

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo command_to_run

每次会话(以及之后的第一次)使用sudo时,系统将提示您输入常规用户密码。

第六步 - 完成可选配置

现在我们已经拥有了强大的基线配置,我们可以考虑一些可选步骤来使系统更易于访问。以下部分介绍了一些针对可用性的附加调整。

安装手册页

Debian以man页面形式为大多数软件提供了大量的手册。但是,默认情况下,最小安装并不总是包含man命令。

安装man-db软件包以安装man命令和手动数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt install man-db

现在,要查看组件的手册,您可以键入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
man command

例如,要查看top命令的手册,请键入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
man top

Debian存储库中的大多数软件包都包含手册页作为其安装的一部分。

更改默认编辑器

Debian提供了各种各样的文本编辑器,其中一些包含在基本系统中。具有集成编辑器支持的命令,如visudosystemctl edit,将文本传递给editor命令,该命令映射到系统默认编辑器。根据您的偏好设置默认编辑器可以帮助您更轻松地配置系统并避免挫败感。

如果默认情况下未安装首选编辑器,请先使用apt进行安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt install your_preferred_editor

接下来,您可以使用以下update-alternatives命令查看当前默认值并修改选择:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo update-alternatives --config editor

该命令显示它知道的编辑器的表,并提示更改默认值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
There are 8 choices for the alternative editor (providing /usr/bin/editor).
​
  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /usr/bin/joe         70        auto mode
  1            /bin/nano            40        manual mode
  2            /usr/bin/jmacs       50        manual mode
  3            /usr/bin/joe         70        manual mode
  4            /usr/bin/jpico       50        manual mode
  5            /usr/bin/jstar       50        manual mode
  6            /usr/bin/rjoe        25        manual mode
  7            /usr/bin/vim.basic   30        manual mode
  8            /usr/bin/vim.tiny    15        manual mode
​
Press <enter> to keep the current choice[*], or type selection number:

最左列中的星号表示当前选择。要更改默认值,请键入首选编辑器的“选择”编号,然后按Enter。例如,要使用nano作为上表中的默认编辑器,我们会选择1

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Press <enter> to keep the current choice[*], or type selection number: 1
update-alternatives: using /bin/nano to provide /usr/bin/editor (editor) in manual mode

从现在开始,您首选的编辑器将使用visudosystemctl edit命令,或者在调用editor命令时使用。

结论

此时,您的服务器基础扎实。您现在可以在服务器上安装所需的任何软件。

想要了解更多关于初始服务器设置的相关教程,请前往腾讯云+社区学习更多知识。


参考文献:《Initial Server Setup with Debian 9》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
PNAS:模拟微生物群落互作及生命游戏在R中的实现
Link:https://www.pnas.org/content/119/1/e2020956119
Listenlii-生物信息知识分享
2022/03/31
9060
PNAS:模拟微生物群落互作及生命游戏在R中的实现
NumPy 初学者指南中文第三版:11~14
本章适用于希望使用 NumPy 和 Pygame 快速轻松创建游戏的开发人员。 基本的游戏开发经验会有所帮助,但这不是必需的。
ApacheCN_飞龙
2023/04/17
3.1K0
NumPy 初学者指南中文第三版:11~14
2.LifeGame生命游戏
这个东西以前在看知乎的时候就看到过,感觉挺好玩的。最近又看到了,细细看了一下原理,恍然大悟这不就是一个空域滤波么?写一个应该很好玩吧?于是就动手了,为了显示方便用的Opencv的Mat数据结构来存取数据和显示。写了一下午差不多就可以了,后面再加了些配置文件的接口,并给了一些配置文件,这里记录一下。
和蔼的zhxing
2019/01/03
3.1K0
神奇的生命游戏,是什么?
生命游戏是一个零玩家游戏,展示了一个二维方格子世界,在每个方格子中居住者一个活着的或者死了的细胞,这些细胞按照生命游戏约定的规则进行模拟,显示的图像看起来颇似生命的出生、繁衍和死亡过程而得名为“生命游戏”。
ChildhoodAndy
2021/09/24
1.2K0
复杂性思维中文第二版 六、生命游戏
在本章中,我们考虑二维细胞自动机,特别是 John Conway 的生命游戏(GoL)。 像上一章中的一些 CA 一样,GoL 遵循简单的规则并产生令人惊讶的复杂行为。 就像沃尔夫勒姆的规则 110 一样,事实证明 GoL 是通用的;也就是说,至少在理论上它可以计算任何可计算的函数。
ApacheCN_飞龙
2022/12/01
5440
R语言Circlize包绘制和弦图
和弦图可用于表示数据间的关系和流量。外围不同颜色圆环表示数据节点,弧长表示数据量大小。内部不同颜色连接带,表示数据关系流向、数量级和位置信息,连接带颜色还可以表示第三维度信息。首尾宽度一致的连接带表示单向流量(从与连接带颜色相同的外围圆环流出),而首尾宽度不同的连接带表示双向流量。外层加入比例尺,还可以一目了然的发现数据流量所占比例。
DoubleHelix
2019/08/07
12.8K0
高度定制的go和kegg富集分析R语言绘图 | Circular barplot
我前面的甲基化教程主要是针对450k这样的芯片,所以champ流程就绰绰有余,很多小伙伴在咱们公众号后台咨询甲基化测序数据分析,恰好最近实习生投稿:
生信技能树
2022/01/21
5.2K0
高度定制的go和kegg富集分析R语言绘图 | Circular barplot
全网最全的R语言基础图形合集
直方图是一种对数据分布情况进行可视化的图形,它是二维统计图表,对应两个坐标分别是统计样本以及该样本对应的某个属性如频率等度量。
生信学习者
2024/06/12
970
全网最全的R语言基础图形合集
超详细的R语言热图绘制之complexheatmap:01
本书是对ComplexeHeatmap包的中文翻译(1-6章),部分内容根据自己的理解有适当的改动,但总体不影响原文。如有不明之处,以原文为准。原文请见:https://jokergoo.github.io/ComplexHeatmap-reference/book/
医学和生信笔记
2022/05/30
4.3K0
我们为你精选了一份Jupyter/IPython笔记本集合 !(附大量资源链接)-下篇
在Blogger中使用IPython发博客,也可以在博客文章中找到,完整的报告在这里。作者:Fernando Perez。
数据派THU
2019/05/09
1.4K0
我们为你精选了一份Jupyter/IPython笔记本集合 !(附大量资源链接)-下篇
R语言笔记完整版[通俗易懂]
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说R语言笔记完整版[通俗易懂],希望能够帮助大家进步!!!
Java架构师必看
2022/02/08
4.6K0
R语言笔记完整版[通俗易懂]
R语言学习笔记
请注意,本文编写于 398 天前,最后修改于 378 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
2.5K0
R语言学习笔记
R语言函数的含义与用法,实现过程解读
R的源起 R是S语言的一种实现。S语言是由 AT&T贝尔实验室开发的一种用来进行数据探索、统计分析、作图的解释型语言。最初S语言的实现版本主要是S-PLUS。S-PLUS是一个商业 软件,它基于S语言,并由MathSoft公司的统计科学部进一步完善。后来Auckland大学的Robert Gentleman 和 Ross Ihaka 及其他志愿人员开发了一个R系统。R的使用与S-PLUS有很多类似之处,两个软件有一定的兼容性。 R is free R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的
学到老
2018/03/19
4.8K0
人工智能学术速递[7.12]
【1】 Learning Interaction-aware Guidance Policies for Motion Planning in Dense Traffic Scenarios 标题:密集交通场景下运动规划的学习交互感知诱导策略
公众号-arXiv每日学术速递
2021/07/27
6240
机器学习学术速递[12.15]
【1】 Robust Graph Neural Networks via Probabilistic Lipschitz Constraints 标题:基于概率Lipschitz约束的鲁棒图神经网络 链接:https://arxiv.org/abs/2112.07575
公众号-arXiv每日学术速递
2021/12/17
8220
统计学学术速递[12.21]
【1】 Hypothesis testing and confidence sets: why Bayesian not frequentist, and how to set a prior with a regulatory authority 标题:假设检验和置信集:为什么贝叶斯不是常客,以及如何设置监管机构的优先事项 链接:https://arxiv.org/abs/2112.10685
公众号-arXiv每日学术速递
2021/12/24
1.3K0
统计学学术速递[7.19]
【1】 A New Robust Multivariate Mode Estimator for Eye-tracking Calibration 标题:一种新的用于眼动定标的鲁棒多变量模式估计器
公众号-arXiv每日学术速递
2021/07/27
8410
人工智能学术速递[7.27]
【1】 Contextual Transformer Networks for Visual Recognition 标题:用于视觉识别的上下文变换网络
公众号-arXiv每日学术速递
2021/07/28
2.1K0
TensorFlow 深度学习第二版:1~5
人工神经网络利用了 DL 的概念 。它们是人类神经系统的抽象表示,其中包含一组神经元,这些神经元通过称为轴突的连接相互通信。
ApacheCN_飞龙
2023/04/23
1.7K0
TensorFlow 深度学习第二版:1~5
人工智能学术速递[7.7]
【1】 Improving Coherence and Consistency in Neural Sequence Models with Dual-System, Neuro-Symbolic Reasoning 标题:用双系统、神经-符号推理提高神经序列模型的一致性和一致性
公众号-arXiv每日学术速递
2021/07/27
1.1K0
相关推荐
PNAS:模拟微生物群落互作及生命游戏在R中的实现
更多 >
目录
  • 介绍
  • 第一步 - 以Root身份登录
    • 关于Root
  • 第二步 - 创建新用户
  • 第三步 - 授予管理权限
  • 第四步 - 设置基本防火墙
  • 第五步 - 为普通用户启用外部访问
    • 如果Root帐户使用密码身份验证
    • 如果Root帐户使用SSH密钥身份验证
  • 第六步 - 完成可选配置
    • 安装手册页
    • 更改默认编辑器
  • 结论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档