個人雲伺服器建設——(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開發環境?