一台新的Linux服务器所需的准备工作
前言
拿到一台新的 Linux 服务器应该做些什么呢?以下操作基本上是要做的,主要是保证安全及易用的一些设置,自己也刚好记录一下,这里以 CentOS 7 来做演示,其它操作系统除了部分命令不一样,其实都是一个道理。
如果还有其它您觉得有必要但没有写到的准备工作,欢迎补充。
第一步:root用户登录
首先,使用 root 用户登录远程主机(假定IP地址是111.111.111.111)。
ssh root@111.111.111.111这时,命令行会出现警告,表示这是一个新的地址,存在安全风险。键入yes,表示接受。然后,就应该可以顺利登入远程主机。
接着,修改 root 用户的密码。
passwd第二步:新建用户组及用户
首先,添加一个用户组(这里假定为 admin 用户组)。
groupadd admin 然后,添加一个新用户(假定为 bill )。
useradd -d /home/bill -s /bin/bash -m bill上面命令中,参数 d 指定用户的主目录,参数 s 指定用户的shell,参数 m 表示如果该目录不存在,则创建该目录。
接着,设置新用户的密码。
passwd bill将新用户(bill)添加到用户组(admin)。
usermod -a -G admin bill接着,为新用户设定 sudo 权限。
visudo如果提示找不到 visudo,需要安装一下 sudo 这个程序。
visudo命令会打开sudo设置文件 /etc/sudoers,找到下面这一行。
root ALL=(ALL:ALL) ALL在这一行的下面,再添加一行。
root ALL=(ALL:ALL) ALL
bill ALL=(ALL) NOPASSWD: ALL上面的 NOPASSWD 表示,切换 sudo 的时候,不需要输入密码,我喜欢这样比较省事。如果出于安全考虑,也可以强制要求输入密码。
root ALL=(ALL:ALL) ALL
bill ALL=(ALL:ALL) ALL然后,先退出root用户的登录,再用新用户的身份登录,检查到这一步为止,是否一切正常。
exit
ssh bill@111.111.111.111 第三步:SSH设置
首先,确定本机有 SSH公钥(一般是文件 ~/.ssh/id_rsa.pub),如果没有的话,使用 ssh-keygen 命令生成一个(SSH教程)。
在本机上另开一个shell窗口,将本机的公钥拷贝到服务器的 authorized_keys 文件。
cat ~/.ssh/id_rsa.pub | ssh bill@111.111.111.111 'mkdir -p .ssh && cat - >> ~/.ssh/authorized_keys'
# 或者在服务器端,运行下面命令
echo "ssh-rsa [your public key]" > ~/.ssh/authorized_keys然后,进入服务器,编辑SSH配置文件 /etc/ssh/sshd_config。
sudo cp /etc/ssh/sshd_config ~
sudo vi /etc/ssh/sshd_config在配置文件中,将SSH的默认端口22改掉,可以改成从1025到65536之间的任意一个整数(这里假定为25000),如果改成其它值了,服务器开放端口哦,不然到时候连不上。
Port 25000然后,检查几个设置是否设成下面这样,确保去除前面的#号。
Protocol 2
PermitRootLogin no #是否允许root用户以任何认证方式登录,有yes/no/without-password
PermitEmptyPasswords no #是否允许空密码登录
PasswordAuthentication no #是否密码认证
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
UseDNS no上面主要是禁止root用户登录,以及禁止用密码方式登录。
接着,在配置文件的末尾,指定允许登陆的用户。
AllowUsers bill保存后,退出文件编辑。
接着,改变 authorized_keys 文件的权限。
sudo chmod 600 ~/.ssh/authorized_keys && chmod 700 ~/.ssh/然后,重启SSHD。
sudo systemctl restart sshd.service下面的一步是可选的。在本机~/.ssh文件夹下创建config文件,内容如下。
Host work1
HostName 121.0.0.3
User root
Port 22
Host work2
HostName 121.0.0.4
User root
Port 22最后,在本机另开一个shell窗口,测试SSH能否顺利登录。
ssh work1这步是通过配置后快速连接服务器,当然你也可以使用其它方法,如 alias,来实现快速连接服务器。
第四步:启用防火墙
不同发行版所使用的 iptables 前端可能是不一样的,比如 CentOS 使用的是 firewalld ,而 Ubuntu 使用的是 ufw。这里不细讲,可以自行搜索,为了安全起见,开启防火墙及放行端口配置是必须做的。
第五步:运行环境配置
登录成功后你可能会发现一个waring:
warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory解决方式:
在 /etc/environment 加入以下两行,重新登陆即可。
LANG=en_US.utf-8
LC_ALL=en_US.utf-8然后,更新软件。
sudo yum update第六步:设置时间同步
如果你买的是国外的VPS,在同步时间之前要先把时区改成中国时区:
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime然后再输入:
sudo ntpdate us.pool.ntp.org一般的VPS都安装有NTP,如果没有安装我们需要先安装一下:
yum install -y ntp设置同步服务器时间,同步完毕之后,输入:
date测试下当前时间,看看是否已经同步。
第七步:安装zsh
1. 安装zsh包
sudo yum -y install zsh
2. 切换默认shell为zsh
chsh -s /bin/zsh
3. 安装on my zsh
这一步需要安装git,sudo yum install git
curl:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
wget:
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
如果拉取ohmyzsh脚本太慢,可以将先使用gitee镜像脚本:
1.wget https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh
2.编辑下载好的install.sh,将内容 https://github.com/${REPO}.git 替换成 https://gitee.com/mirrors/oh-my-zsh.git 后保存。
3.sh install.sh
实际上到这一步 oh my zsh 就已经安装完成了。
4. 修改oh my zsh 主题
查看oh my zsh主题:
ls ~/.oh-my-zsh/themes
显示如下:
adben.zsh-theme gallois.zsh-theme nicoulaj.zsh-theme
af-magic.zsh-theme garyblessington.zsh-theme norm.zsh-theme
afowler.zsh-theme gentoo.zsh-theme obraun.zsh-theme
agnoster.zsh-theme geoffgarside.zsh-theme peepcode.zsh-theme
alanpeabody.zsh-theme gianu.zsh-theme philips.zsh-theme
amuse.zsh-theme gnzh.zsh-theme pmcgee.zsh-theme
apple.zsh-theme gozilla.zsh-theme pure.zsh-theme
arrow.zsh-theme half-life.zsh-theme pygmalion.zsh-theme修改主题:
vim ~/.zshrc
可以看到默认的主题是 ZSH_THEME="robbyrussell" 改成自己喜欢的即可