個人雲伺服器建設——(1)Ubuntu16.04雲伺服器初始化管理

# 介紹

如今,雲伺服器在網路服務中已經變得非常常見,與傳統的機房相比,雲伺服器具有快速升級、降級硬體配合的優勢,可以根據業務開展情況隨時對伺服器進行調整,既不會浪費性能,也不至於性能不足。對個人來說,擁有一台自己的雲伺服器,只需要很簡單的操作,就可以搭建屬於自己的網路服務平台,這在很多方面都是很有益的。

在國內來說,大型網路企業在自己使用大量雲伺服器的同時,也都紛紛提供雲伺服器功能,比較著名的有阿里雲,騰訊雲,亞馬遜,微軟Azure,以及百度雲,京東雲,華為雲等等。

雲伺服器的購買方式在上述各家網站上都有詳細的描述,而對於學生與創業企業來說,各家雲伺服器提供商也都有不同程度的優惠。一般而言,最低的雲伺服器配置對於新手來說性能已經足夠了。

雲伺服器系統配置一般為Windows Server或者Linux發行版,考慮到伺服器系統的流行性,對新手最友好的Linux發行版Ubuntu是最佳選擇(當然喜歡CentOS的也大有人在)。

# SSH登陸

購買雲伺服器後,運營商都會提供登陸的公網IP地址以及登陸密碼。Linux雲伺服器默認都會打開22埠供SSH登陸。如果操作系統是Windows,需要下載XSHELL或者Putty這樣的SSH登陸工具,在Linux下則可以直接通過命令行進行SSH登陸。

當然,Windows系統也可以通過安裝Cygwin以運行Linux環境,這對熟悉Linux操作很有幫助,而在Windows10的情況下,也可以安裝Ubuntu或者SUSE這樣的Linux發行版。

```shell

ssh root@(ip地址)

```

阿里雲伺服器默認用戶是root,騰訊雲Ubuntu系統默認用戶名是ubuntu,這一點騰訊雲做的更好。默認以root登陸實際上會給系統帶來很多潛在問題。因此,一般情況下在登陸過後需要創建一個額外的用戶用於遠程管理

# 創建用戶

通過以下命令創建用戶,比如要創建用戶名demo

```shell

add user demo

```

按系統提示輸入密碼即可,輸入強密碼會提高系統安全性,一般要求包含大小寫,數字以及特殊字元且長度不小於8位。

# 設置root許可權

創建用戶之後需要給用戶設置su即superuser(超級用戶)許可權,因為很多操作必須要通過su許可權進行,而如果反覆切換到root用戶下則違背了我們提高安全性的初衷。因此,在root角色下為新用戶設置sudo許可權。

```shell

usermode -aG sudo demo

```

這個命令實際上是把demo用戶添加到sudo組中,也因此demo會擁有sudo許可權。

# 添加公鑰登陸

在遠程伺服器管理的時候,最好通過密鑰而非密碼的方式進行登陸,這樣可以最大程度上降低密碼被破解的風險。密鑰的方式涉及密碼學知識,一般來說採用密鑰對的時候,系統生成一對密鑰,一個為公鑰,一個為似鑰,公鑰可以放在任意地方,公開在網站上也可以,但是私鑰必須妥善保管,因為只要拿私鑰就可以與公鑰配對。我一個簡單的理解是,公鑰其實相當於鎖而私鑰相當於鑰匙。你可以把鎖掛在任何地方,但是鑰匙必須自己保管好才能拿來開鎖。

要添加密鑰登陸,首先要生成一對密鑰。(**在本地電腦上,絕對不能在遠程計算機上生成**)

```shell

ssh-keygen

```

這個命令可以生成一對密鑰,按照命令提示即可。在生成過程中也可以輸入密碼再保護密鑰,這樣更安全。

生成的密鑰對一般在/home/demo/.ssh/目錄下,如果生成的是rsa密鑰,則公鑰名稱為 id_rsa.pub,私鑰為id_rsa。在windows下目錄會不一樣(其實我也不知道放在哪有用,有一次放在/user/的個人目錄下面好像可以了。如果有多個雲伺服器,也沒有必要為每個伺服器生成不同的密鑰對,有一對基本上就夠用了。

# 上傳公鑰

上傳公鑰有兩種辦法

## 使用專用命令

使用下面的命令可以一步到位完成上傳密鑰並添加到遠程計算機的.ssh/authorized_keys文件里。

```shell

ssh-copy-id demo@(ip地址)

```

**注意。.ssh是隱藏文件夾,在Linux下是通過給文件或者文件夾名前面加.來表示隱藏文件的,可以通過ls -a參數查看**

## 手動完成

手工完成上傳公鑰的命令可以弄明白ssh-copy-id都幹了啥。

```shell

cat ~/.ssh/id_rsa.pub

```

這個命令把公鑰輸出在終端里,也可以通過編輯器打開文件。把內容複製下來。然後通過終端ssh登陸到遠程伺服器上(通過demo)

```shell

su -demo

mkdir ~/.ssh

chmod 700 ~/.ssh

nano(vim) ~/.ssh/authorized_keys

```

以上命令依次賦予demo sudo許可權,建立.ssh目錄並修改許可權,新建一個authorized_keys的文件(可以用熟悉的編輯器,nano,vim都可以)。

把之前複製的公鑰內容粘貼到這個新文件里並保存。

```shell

chmod 600 ~/.ssh/authorized_keys

```

修改文件許可權以提高安全性。

# 禁用密碼登陸

完成密鑰設置後,最好禁止通過密碼登陸以提高伺服器安全性(當然,這要建立在確保密鑰能登陸上去的情況下,要不然就恐怕只能重置伺服器了,因此自己再也登陸不上去了)

```shell

sudo nano /etc/ssh/sshd_config

```

打開ssh配置文件,找到下列內容並修改為下列值

```shell

PasswordAuthentication no

PubkeyAuthentication yes

ChallengeResponseAuthentication no

```

退出或者重啟以下遠程伺服器,再通過ssh測試一下登陸。

# 設置防火牆。

可以通過ufw設置系統防火牆。

```shell

sudo ufw app list

```

查看通過或者禁止的程序列表

```shell

sudo ufw allow OpenSSH

```

允許SSH登陸

```shell

sudo ufw enable

sudo ufw status

```

啟用防火牆並檢查狀態。

初步的伺服器配置工作基本上到這裡就完成了。


推薦閱讀:

ubuntu配置環境變數如何保存?
Ubuntu 16.04 體驗如何?
怎麼更改 Ubuntu 下 Chrome 的字體?
Ubuntu 進軍移動市場可以在哪些方面取得優勢?
如何在Ubuntu下配置Android開發環境?

TAG:Ubuntu | 云主机 | 运维 |