編程派微信號:codingpy
本文是「上云連載」系列的第二篇,將主要介紹如何按照自己的喜好配置云服務器,同時確保登陸方便、安全。如有不正確的地方,希望大家指正。
新建云服務器實例
各家云計算服務商對云服務器產品的叫法都不一樣,亞馬遜家的叫 EC2 (Elastic Compute Cloud),之前用的 DigitalOcean 的叫 Droplet,國內的阿里云的叫 ECS (Elastic Compute Service),騰訊云則叫 CVM (Cloud Virtual Machine)。但是本質上是類似的,都是可以按需快速部署的虛擬服務器。
這次網站回遷,我選擇的是騰訊云的 CVM。在開始進行 CVM 配置之前,我們先通過騰訊云的控制臺新建一個實例。
由于之前我們領的代金券只適用于包年包月類型的服務器,所以新建實例時計費模式選擇為「包年包月」。對于需要長期運行的網站應用來說,包年包月的模式還是比較劃算的。機型選擇標準型S1中最低配的即可。
我在 DigitalOcean 時使用的服務器操作系統是 Ubuntu 14.04,但是回遷到騰訊云時我改為了 Debian 系統。二者的差異不大,以前處理 Ubuntu 系統時的操作大多也是適用的。
選擇存儲與網絡時,建議將系統盤選擇為云硬盤,除了可以獲得免費贈送的空間之外,還方便以后根據需求升級 CVM 的 CPU 和內存。其他的使用默認設置即可。
接下來需要設置一些 CVM 相關的信息,如主機名和登陸密碼。一開始,你的賬號下只有默認項目,這里我已經創建了一個叫做「編程派網站」的項目。在騰訊云中,你的所有云資源,包括云服務器、對象存儲甚至是 SSH 密鑰,都可以和項目關聯在一起,方便對應管理。如果你發現采購的云資源在控制臺看不到,可以試試切換所屬的項目。
如果你不希望手動設置密碼,可以選擇「自動生成密碼」,騰訊云會向你的注冊郵箱發送相關登陸信息。安全組暫時選擇為默認安全組,將暴露所有端口到公網和內網。
root 登陸
在登陸剛啟動的 CVM 實例之前,我們需要知道服務器的公網 IP,以及 root 用戶的密碼。如果你選擇的是自動生成密碼,那么請查看郵箱。接下來,我們在本地使用如下命令登陸到服務器。
$ ssh root@qcloud-cvm-ip # 請將 qcloud-cvm-ip 替換為實際 IP
按照提示進行操作,輸入 root 用戶驗證所需的密碼(可以從騰訊云發送的郵件中找到)。如果這是你第一次使用密碼登陸服務器,登陸成功后系統還會提示你更換 root 密碼。
root 用戶
root 用戶是 Linux 環境下的超級管理用戶,擁有非常大的權限。由于 root 用戶權限過大,不建議大家日常使用 root 賬號進行服務器操作。因為有可能會出現讓你加班、甚至被開除的意外。
因此,我們接下來創建一個新的用戶賬號,在日常工作中使用。
創建新用戶
以 root 賬號登陸服務器之后,我們就可以添加以后經常使用的用戶賬號了。本文中,我們將創建一個名為 earlgrey
的新用戶,你可以根據自己的情況選擇合適的用戶名。
$ adduser earlgrey
系統會要求你回答一些問題,最重要的就是設置該用戶的密碼。對于其他問題,并不是必須的,可以直接按回車鍵完成。
添加 root 權限
現在 earlgrey
用戶還只是一名普通用戶,不具備系統管理權限。我們需要為該用戶添加 root 權限。這樣,就可以在每個命令前加上 sudo
以管理員權限執行了。
安裝 sudo
由于 Debian 8 系統默認沒有安裝 sudo
包,因此我們先通過 apt-get
安裝。
首先,更新 apt 包目錄:
$ apt-get update
然后使用下面的命令安裝 sudo
:
$ apt-get install sudo
現在可以使用 sudo
和 visudo
命令了。
賦予 sudo 權限
為了給新用戶添加管理權限,我們需要把新用戶添加到 sudo
用戶組。Debian 8 系統中,屬于 sudo
用戶組的用戶默認可以使用 sudo
命令。
在 root 用戶下 ,運行如下命令,將 earlgrey
用戶添加到 sudo
用戶組:
$ usermod -a -G sudo earlgrey
上面的命令中,-a
選項指的是將用戶添加到對應的用戶組中,只能配合 -G
選項一起使用。-G
后可以指定多個用戶組名稱。如 $ usermod -a -G sudo, wwww-data
。
添加公鑰驗證
推薦給新用戶添加公鑰驗證,一來可以避免每次登陸時都要輸入密碼,二來需要私鑰才能登陸可以提高安全性。
生成密鑰對
如果沒有現成的 SSH 密鑰對(由公鑰和私鑰組成),很容易就可以生成。只需要在本地機器上輸入如下命令即可:
ssh-keygen
假如本地用戶的名稱為 earlgrey
,接下來應該會看到如下輸出:
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/earlgrey/.ssh/id_rsa):
如果你以前沒有生成過密鑰對,按回車接受默認設置即可。如果有舊的密鑰對的話,這樣會覆蓋以前的密鑰對,建議更改為別的文件名。系統還會提示輸入口令(passphrase),為了簡單起見,我們直接回車使用空口令。如果你輸入了口令的話,那么在 SSH 登陸時,除了需要提供密鑰之外,還需要輸入口令才能登陸。
命令運行結束后,會在本地用戶的根目錄中的 .ssh
目錄下創建一個私鑰 id_rsa
和一個公鑰 id_rsa.pub
。記得別公開分享你自己的私鑰。
復制公鑰
賦值公鑰有兩種方法,一是通過 sshh-copy-id
腳本自動賦值到遠程用戶,二是手動安裝。
1. ssh-copy-id 腳本
如果本地機器上安裝了 ssh-copy-id
腳本,那么就可以使用該腳本將公鑰安裝到任何有登陸權限的用戶。
運行該腳本,同時指定用戶名和服務器的 IP 地址:
$ ssh-copy-id earlgrey@qcloud-cvm-ip
按提示輸入登陸密碼后,你剛才生成的公鑰就會自動賦值到遠程用戶的 .ssh/authorized_keys
文件中。接下來就可以使用對應的私鑰登陸服務器了。
2. 手動安裝公鑰
使用如下命令打印你剛剛生成的公鑰(id_rsa.pub
:
$ cat ~/.ssh/id_rsa.pub
打印出來的公鑰大致應該是這樣子的:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBGTO0tsVejssuaYR5R3Y/i73SppJAhme1dH7W2c47d4gOqB4izP0+fRLfvbz/tnXFz4iOP/H6eCV05hqUhF+KYRxt9Y8tVMrpDZR2l75o6+xSbUOMu6xN+uVF0T9XzKcxmzTmnV7Na5up3QM3DoSRYX/EP3utr2+zAqpJIfKPLdA74w7g56oYWI9blpnpzxkEd3edVJOivUkpZ4JoenWManvIaSdMTJXMy3MtlQhva+j9CgguyVbUkdzK9KKEuah+pFZvaugtebsU+bllPTB0nlXGIJk98Ie9ZtxuY3nCKneB+KjKiXrAvXUPCI9mWkYS/1rggpFmu3HbXBnWSUdf earlgrey@Macbook Pro.local
然后,以新用戶身份登陸服務器:
$ ssh earlgrey@qcloud-cvm-ip
登陸成功后,應該會進入該用戶的根目錄。接下來創建一個叫 .ssh
的新目錄,然后使用如下命令限制目錄權限:
mkdir .ssh
chmod 700 .ssh
700 表示只有目錄的所有者才能讀、寫和執行。
現在使用 Vim 文本編輯器在 .ssh
目錄下創建一個名為 authorized_keys
的文件。
$ vim .ssh/authorized_keys
在 Vim 中按 i 進入插入模式,然后 Ctrl + v
粘貼之前賦值的公鑰。然后按 Esc
回到正常模式,在英文輸入法下鍵入 :wq
保存并退出文件。
并使用如下命令限制文件的權限:
chmod 600 .ssh/authorized_keys
600 表示文件所有者可讀、可寫。
之后,你就可以使用私鑰驗證登陸服務器了,不必重復輸入密碼。
禁用 root 登陸
在開始配置服務器的時候 ,我們提到了最好不用使用 root 賬號登陸服務器。為了確保不會出現這種情況,我們可以修改 SSH daemon 的配置,禁止遠程登陸值 root 賬號。
以上面配置的管理員用戶身份,使用 sudo 命令打開配置文件:
$ sudo vim /etc/ssh/sshd_config
如果想禁止遠程 root 登陸,找到下面這行文本:
PermitRootLogin yes
將其修改為
PermitRootLogin no
并保存文件。由于我們已經創建了一個管理用戶,而且可以視情況增加權限,禁止 root 賬號登陸反而可以讓服務器更加安全。
最后,只需要重啟 SSH 服務即可讓新配置生效。
$ systemctl restart ssh
本地配置 SSH
完成以上配置之后, 以后我們每次只需要 ssh earlgrey@qcloud-cvm-ip
即可登陸服務器。
不過這樣還是有點麻煩,每次都得輸入用戶名和 IP 地址。為了進一步簡化操作,我們對本地的 SSH 登陸進行配置。
打開 ~/.ssh/config
文件,然后添加如下配置:
Host qcloud
Hostname qcloud-cvm-ip
User earlgrey
IdentityFile ~/.ssh/id_rsa
之后,只需要執行 ssh qcloud
即可登陸服務器。
安裝 oh-my-zsh
到上面那步為止,CVM 基本配置完成了。
不過由于在本地用慣了 oh-my-zsh,我決定在服務器上也安裝使用。
我們先登陸服務器:
$ ssh qcloud
然后執行
$ sudo apt-get install git zsh
$ sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
安裝好之后,建議將服務器上的 oh-my-zsh 主題設置為不同于本地的,否則你可能分辨不出是不是在服務器上的操作。
「上云連載」系列的第二篇就講到這里,大部分是比較基礎的操作,比較適合新手跟著一起操作。下一篇將介紹如何在 CVM 上搭建私有可協作的 Git 服務器。
歡迎轉發至朋友圈。如無特殊注明,本公號所發文章均為原創或編譯,如需轉載,請聯系「編程派」獲得授權。
【近期優秀教程推薦】
掃碼關注編程派
獲取最新教程及資源推送
↓↓↓ 點擊閱讀原文,查看更多Python教程
閱讀原文:http://mp.weixin.qq.com/s?__biz=MzAwNDc0MTUxMw==&mid=2649639618&idx=1&sn=831edf96783839b48e34031176d00b21&chksm=833daa24b44a23329d9aa0ade1dd25b9799fc6e9e062e512492d76d01e674f2d4e0feee33a10#rd