03/27/2017

全新 Ubuntu VPS 配置

不时的有配置全新 VPS 的需求,所以就写一篇文章方便以后参考。这篇文章包括了添加用户,设置 SSH,设置 Firewall,设置 bash 个性化定制,更改 hostname,安装常用软件(咳咳...) 等等步骤。本文今后也会根据需求慢慢补充。

0x00 - 开通个 VPS

我演示就用 DigitalOcean (DO) 了。使用的是 $0.007 一小时的选项,一个月的话是 $5。链接免费送 $10。

比较方便的是他家可以直接添加 SSH Key,不过我还是演示一下通过手动设置的方式。

0x01 - 添加 DNS A, AAAA 记录

添加完服务器第一步就是添加到 DNS 的 A and/or AAAA 记录里。吐槽一下,之前发现阿里云 ECS 全球云服务器竟然不支持 ipv6。

添加完后本地确认:

$ dig +noall +answer A do-whale.whe.cloud
do-whale.whe.cloud.    299    IN    A    138.197.102.150

$ dig +noall +answer AAAA do-whale.whe.cloud
do-whale.whe.cloud.    299    IN    AAAA    2604:a880:800:a1::b10:1001

这一步是可选的,不过之后就都要直接使用 ip 进行操作。

0x02 - 添加用户

DO 是直接邮件 root 密码的。所以用它登录。用户就用 whale 做演示。

$ ssh root@do-whale.whe.cloud

添加用户

$ adduser whale

$ usermod -aG sudo whale

切换到 whale 账户的模式

$ su - whale

0x03 - 设置 SSH

SSH 设置的稍微安全一点总是好的:

a. 本地生成一对钥匙

如果本地已设置过 ssh key 请跳下段。

本地新开一个 terminal 运行如下生成一对钥匙:

$ ssh-keygen

默认你的私钥存在 ~/.ssh/id_rsa 公钥存在 ~/.ssh/id_rsa.pub

b. 上传公钥

本地新开一个 terminal 上传公钥(两种方法二选一):

$ ssh-copy-id -i ~/.ssh/id_rsa.pub whale@do-whale.whe.cloud

或者

$ cat ~/.ssh/id_rsa.pub | ssh whale@do-whale.whe.cloud 'mkdir -p ~/.ssh; cat - >> ~/.ssh/authorized_keys'

c. 配置 sshd_config

$ sudo nano /etc/ssh/sshd_config

确保以下没有 # prefix 并被赋有正确的值:

Port 1234
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

接着就 sshd 设置重载:

$ sudo systemctl reload sshd

d. 用新配置连接 ssh

新开 terminal 窗口运行:

$ ssh -p 1234 whale@do-whale.whe.cloud

是不是不需密码就登录了呐!

关于 SSH 的更多内容和技巧,请移步「SSH 设置与技巧」。

0x04 - 配置防火墙(UFW 简易墙)

允许 incoming 端口,务必打开刚才设的 ssh 端口,不然就锁在外面了:

$ sudo ufw allow 1234/tcp

$ sudo ufw allow 80

$ sudo ufw allow 443
Rules updated
Rules updated (v6)

开启防火墙:

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

设置完了看看都有啥:

$ sudo ufw status verbose
Status: active
Logging: off
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
1234/tcp                   ALLOW IN    Anywhere                  
80                         ALLOW IN    Anywhere                  
443                        ALLOW IN    Anywhere                  
1234/tcp (v6)              ALLOW IN    Anywhere (v6)             
80 (v6)                    ALLOW IN    Anywhere (v6)             
443 (v6)                   ALLOW IN    Anywhere (v6)

为了安全起见 ssh 端口还可以限制 IP 访问,

关于 UFW 防火墙的更多内容和技巧,请移步「Ubuntu UFW 防火墙设置」。

0x05 - Bash 个性化定制

如果你有设置过 .bashrc, .bash_profile, .bash_aliases, .screenrc 等,可以直接移动进去。 可以先看看系统自带的里面有没有想保留的。有的话就把你的加在后面:

$ cat ~/.bash_aliases | ssh -p 1234 whale@do-whale.whe.cloud 'cat - >> ~/.bash_aliases'

没有的话就覆盖掉:

$ cat ~/.bash_aliases | ssh -p 1234 whale@do-whale.whe.cloud 'cat - > ~/.bash_aliases'

登出再登入或者运行这个:

$ source ~/.bashrc

Wolla!

white cli screenshot

black cli screenshot

我的是:

PS1='${debian_chroot:+($debian_chroot)}\[\033[48;5;27;38;5;194m\]\u\[\033[0m\]\[\033[1;38;5;27m\]@\h\[\033[0m\]:\[\033[01;34m\][\w]\[\033[00m\]\$ '

Google Compute Engine 默认(绿色):

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

大家也可以生成和分享自己的 PS1 噢:

0x06 - 更改 hostname

更改 /etc/hostname 输入新的 hostname 并保存

$ sudo nano /etc/hostname

更改 /etc/hosts 把旧的 hostname 改成新的,确保新的 hostname 指向本机

$ sudo nano /etc/hosts

重启

$ sudo reboot

0x07 - 安装软件

a. apt-get install

$ apt-get update

$ apt-get install -y \ 
    screen \
    wget \
    zip \
    iftop \
    htop \
    ncdu \
    ;

b. 安装 Docker

官方一键安装:

$ wget -qO- https://get.docker.com/ | sh

$ sudo usermod -aG docker $USER

加到 docker group 之后请登出再登入。

c. 测试 80 端口

$ docker run -d --name test-nginx -p 80:80 nginx

打开浏览器进入 http://do-whale.whe.cloud 会显示 nginx 欢迎界面 - 测试成功!

nginx welcome page

d. 运行 Shadowsocks

$ docker run -d --name shadowsocks --restart always -p 19840:8888 -e PASSWORD=DockerIsAwesome mrjin/shadowsocks:alpine

这个 image 才17MB,第一次 pull 也不会很久,别忘了开防火墙:

$ sudo ufw add 19840/tcp

端口 19840 可以改成别的,默认的 aes-256-cfb 加密方式也可以改。

详见:「mrjin/shadowsocks | Docker Hub」。

Shadowsocks Settings

Map showing DigitalOcean ip

注意:docker 端口映射是直接在 iptables 操作的,会绕过 UFW 防火墙。具体更正操作及关于 UFW 防火墙的更多内容和技巧,请移步「Ubuntu UFW 防火墙设置」。

0x08 - Snapshot

DO 支持 snapshot 功能。别家一般都有类似的功能。这样以后在同一家开新机器时候就可以是已经基础配置好的版本了。

0x09 - 后记

写这篇文章 DO 这个 VPS 总共开了俩小时,花了 $0.007 * 2 = $0.014 = 一角钱

如果有兴趣开个 VPS 玩玩就试试 DigitalOcean 呗,反正链接送 $10 等于免费玩两个月哈。

如果是阿里云、腾讯云请移步「阿里云 ECS 监控卸载」。


Sources & Links:

本文链接:https://blog.whe.me/post/ubuntu-server-setup.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。