作为一个前端,都会有一个写后端接口的野望,我也不例外。
因此,你首先就是要买一台服务器,买了服务器之后需要做一个配置。本文就是我初始化我的服务器的一个过程,希望对你有帮助。
root 登录
当你购买了一台服务器后,会有一个root账号,并让你设置初始密码。
当你设置后之后,就可以通过命令行工具远程进行登录了:
js 代码解读复制代码ssh root@111.11.11.111
// 输入密码
root@111.11.11.111's password:
为什么使用 root 登录是一个不好的实践
- 有非常多的 bot 会尝试使用 root + pwd 的 ssh 方式暴力登录机器,当尝试成功以后,黑客就会控制整个系统。
- 假如使用特定用户名 + pwd,bot 需要先猜测用户名(N 次),然后是密码(M 次),这样复杂度提升到 N * M。
- root 可以造成更大的危害,影响整个系统,而某个特定用户只能影响它的文件系统。
创建一个账号进行登录
1、首先使用root账号进行登录
2、然后添加用户,并设置密码
js 代码解读复制代码// 设置用户名 因为主要是web页面,取名叫weber
adduser weber
// 设置新用户密码
passwd weber
有的系统在你adduser weber执行时,就会让你设置密码,有的系统不会,需要你通过passwd weber进行设置。
设置该用户拥有 sudo 权限,给予它在登录以后切换到 root 的能力
首先找到/etc/sudoers,表示所有可以sudo的用户列表。
首次登录服务器,是不可以修改/etc/sudoers的。
![]()
通过下面操作,让root用户可以对这个文件进行写这个操作。
bash 代码解读复制代码# 修改权限,u 表示所有者(通常是 `root`),w 表示写权限 + 表示添加
chmod u+w /etc/sudoers
![]()
bash 代码解读复制代码# 编辑文件
vim /etc/sudoers
# 找到 `root ALL=(ALL) ALL`
# 再加一行 `weber ALL=(ALL) ALL`
![]()
修改完成后,建议撤销写入权限以增强安全性:
bash 代码解读复制代码chmod u-w /etc/sudoers
测试新用户登录,以及是否有对应的root权限
1、登录
js 代码解读复制代码ssh weber@11.11.11.111
登录成功后,可以使用whoami来查看登录用户。
![]()
创建一个新用户后,都会在home下创建一个用户名的文件夹weber。
![]()
2、如何拥有root权限
有两种方式:
- 可以使用 su 直接切换为 root 用户
![]()
可见已经由weber用户切换到root用户了,如果想切换回去,只需要输入exit。
- 也可以使用 sudo 快捷的使用 root 权限进行操作
js代码解读复制代码sudo 命令
前面加上sudo后执行之前,需要输入密码。
禁止使用 root 远程登录 ssh
前面创建新用户的目的,就是为了不使用root进行登录。
首先,还是使用root账号进行登录,执行如下操作
bash 代码解读复制代码# 修改 ssh 配置
vim /etc/ssh/sshd_config
# 修改 yes 为 no
PermitRootLogin no
# 重启 sshd 服务
service sshd restart
# 检测sshd服务是否重启
service sshd status
![]()
修改 yes 为 no 即可。
这样只有weber账号能登录了,从而保障了服务器的安全。
可选:不使用密码登录
为什么使用密码登录有时候是一个不好的实践?
非常简单:用户经常使用非常简单的密码,全球最常用的密码是 123456 以及 abc123,而且用户会在多个账户大量重复使用,所以黑客从别的地方盗取的密码很可能在其他账户也可以使用。
推荐:使用 SSH key 进行登录
SSH key 采用了经典的非对称加密技术,可以使用工具创建一个公钥和私钥,你可以将公钥放置在任何的服务器当中,在本地保留私钥。
比如,在gittee中,我们如果要通过ssh方式进行git clone,那么需要在本地创建一个公钥和私钥,把公钥存放在gittee中。
![]()
在 ssh 登录的时候,SSH 验证公钥和私钥的合法性,当合法的时候,就可以免密码登录了。证书由 1024 Bits 到 4096 Bits(128 到 512 字符)的随机字符组成,要比你自己的密码安全的多。
首先进入到 .ssh文件下,查看是否有ssh的公钥和私钥。
![]()
没有话,通过如下方式创建:
bash 代码解读复制代码# 创建 ssh key pair
ssh-keygen -t rsa -b 4096 -C "[email protected]"
# windows 可以使用 putty 或者 git scm软件生成,备注网址:
# https://www.jianshu.com/p/95262f5eba7a
# 本地 ssh 证书的位置
~/.ssh/id_rsa
~/.ssh/id_rsa.pub
# 登录远程机器
ssh [email protected]
# 创建.ssh文件夹
mkdir .ssh
# 这个文件当中的公钥会被当前的主机设置为信任方
touch ~/.ssh/authorized_keys
# 将 id_rsa.pub 的文本内容黏贴进来
# 设置文件权限
chmod -R 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
经过上面设置后,此时就可以免密登录了。
chmod -R 700 ~/.ssh 递归设置 ~/.ssh 目录及其所有子目录和文件的权限为 700。
700表示:
7(所有者) :读(4) + 写(2) + 执行(1)权限(即rwx)。0(组和其他用户) :无任何权限(---)。-R:递归操作(对目录内的所有子目录和文件生效)。
600表示:
6(所有者) :读(4) + 写(2)权限(即rw-)。0(组和其他用户) :无任何权限(---)。
可选:关闭密码登录服务器的功能
bash 代码解读复制代码# 修改 ssh 配置
vim /etc/ssh/sshd_config
# 修改为 no
PasswordAuthentication no
# 重启服务
service sshd restart
总结
到这里基本上一台服务器的初始化设置就完成了。
-
- 避免使用root账号登录,应该是创建一个账号进行登录;
-
- 创建账号后有时需要使用root的权限,这就需要设置该用户拥有 sudo 权限,给予它在登录以后切换到 root 的能力;
-
- 既然创建的账号有了root权限,那么为了系统的安全性就应该关闭root账号的登录,即禁止使用 root 远程登录 ssh;
-
- 最后一步是使用 SSH key 进行免密登录,因为设置的密码其实是不安全的,同时也很麻烦。
评论记录:
回复评论: