虛擬主機開好了,好興奮呀


photo from ETToday新聞雲

但...要怎麼操作它??

登入Digital Ocean的控制後台,左邊選droplets,就會來到這個頁面,
如果您已經開好一台虛擬主機,畫面上應該會有類似像下面圖片上的結果,
其中紅色方塊的地方就是能夠連到您那台主機的IP,
為了安全,千萬不要讓別人知道您主機的IP。
dg_dash_board

使用終端機的ssh指令來連線我們的主機

如果您的電腦的作業系統是windows,可以用類似PieTTY, PuTTY之類的軟體來做ssh連線,
或是您可以裝git for windows,安裝好之後就有git bash可以使用, 就可以像MAC OS X一樣直接在terminal裡下一些bash指令,包含ssh,scp...這些之後我們都會用到的指令, windows的朋友也可以順便裝conEMU這個神器,它可以同時讓您開很多個 windows的terminal視窗。

底下的指令都會以在MAC OS X上執行的樣子去寫

打開終端機

在本地端電腦的terminal上輸入

ssh root@您的遠端主機的IP

因為這一次是第一次連線,系統會問您是否是否要把這個陌生的ip加入到您電腦裡已知的host中,輸入yes
接著它會問您這台虛擬主機上root的密碼,這個密碼digital ocean會寄到您註冊時使用的信箱裡,
輸入完後,因為這是第一次連線進來,系統會要求您一定要修改root的密碼,

先輸入一次目前的密碼(就是e-mail附上的那個),
再輸入更改後的密碼,
再輸入一次這個更改後的密碼,以確認密碼。

都沒錯的話,就會正式進入到server裡,,terminal上會看到

root@您的主機名稱:~#

然後游標在一閃一閃,這樣就是可以輸入指令的狀態了。

可以再開一個 terminal tab,然後一樣用root 做ssh登入,輸入新密碼,來確認剛剛密碼是否都修改正確,確認一切OK。

做好一些讓主機可以安全一點的設定

因為root是每台Linux主機上都一定會有的特殊帳號,要是有人知道您主機的IP,他一樣可以ssh到您的主機,然後用root帳號登入,接著不斷嘗試密碼,直到正確為止,所以為了安全起見,通常都必須要設定不允許使用root登入

先創個之後平常操作主機時使用的user

就先暫且叫它vip好了,以下的指令裡的vip都可以換成是任何您自己取的user名稱

 adduser vip

設定密碼。

 passwd vip

輸入一個強力一點的密碼,然後再輸入一次以確認密碼。

把這個user設定成是可以執行超級使用者才能執行的命令

超級使用者就是像root這樣特殊的使用者,現在我們要把vip變成一樣可以執行root可以執行的命令, 只是執行時,指令前面必須加上sudo並且要輸入vip的密碼,才能執行。

我們要把vip加入wheel這個特殊的群組裡,讓它可以取到root那樣等級的權限。

gpasswd -a vip wheel

wheel是一個unix-like系統裡固定存在的特殊群組,關於更多關於wheel群組的資訊或許可看:link

產生一組 公鑰+私鑰 以做驗證登入

再來我們要讓剛剛加入wheel群組的user vip,在之後可以透過一個SSH key pair驗證的機制來登入:我們在自己平常用來開發程式, 寫網誌的電腦上算出一長串的隨機文數字作為一個鑰匙,並且做成一個檔案,然後把這個檔案的內容貼在這台虛擬主機上的某個地方,之後每次vip要登入時,這個鑰匙檔案就會啟動,跟虛擬主機上的鑰匙配對,這樣就能做到只有這個檔案有存在的電腦上才能透過vip這個帳號來登入這台主機,就算vip的登入密碼不幸讓駭客知道(或是被用暴力破解法試出來,而且他還要知道您這台server上有一個可以用來登入的帳號叫vip ),駭客也無法登入這台主機,因為他的電腦上並不存在那個作為鑰匙的檔案,這會讓主機更加安全。

把公鑰放到遠端主機上

使用以下指令,就可以把剛剛產生出來的公鑰id_rsa.pub裡的內容印在terminal上

localUser$ cat ~/.ssh/id_rsa.pub

把跑出來的內容全部複製起來。

把遠端主機上的SSH daemon 設定為不允許用root登入

打開系統上sshd_config這個設定檔

vi /etc/ssh/sshd_config

這個設定檔裡有很多設定,我們的目的是要找到這行:

#PermitRootLogin yes

我們可以在 vi的非插入模式(按下ESC)下輸入/PermitRootLogin按下ENTER, vi就會找到那行,並且把游標停在P上, 按下鍵盤上的i進入插入模式,把那行的#刪除掉,以移除註解,並且把 yes 改成 no

所以這行就會變成這樣:

PermitRootLogin no

按下ESC離開插入模式,然後輸入:x按下ENTER以存檔並離開。

reload SSH

現在因為我們改變了SSH daemon的設定,所以我們應該重啟sshd service

systemctl reload sshd

這樣子就能把這台虛擬主機設定成不允許使用root登入。極度推薦每台server都應該這樣做的,以確保您的主機的安全。

登出root前,先確定那個創出來的超級使用者能使用的功能一切正常

sudo 要執行的指令

什麼是root權限的指令? 非常的多,例如追蹤觀看系統log

tail -f ./var/log/messages

如果身份不是root的話,就會說這是不符權限的操作, 必須在指令前面加上sudo,按下ENTER後,系統會要求您要輸入vip的密碼,才能執行。

sudo tail -f ./var/log/messages

按下ctrl+c 就可以離開tail這個程式

如果都沒問題了

輸入

exit

就可以結束目前ssh連線

到這邊就算完成一些新開起來的虛擬主機該做的一些設定了。

more reference

difgital ocean - how to connect with ssh
difgital ocean - centos7 init setup
^^這篇教學大部分是看過這篇文章後的記錄,如果想看更詳細的步驟的朋友,可以參考這篇

-- end of file--