部落格建置過程2 - Linux虛擬主機的初始設定
虛擬主機開好了,好興奮呀
photo from ETToday新聞雲
但...要怎麼操作它??
登入Digital Ocean的控制後台,左邊選droplets,就會來到這個頁面,
如果您已經開好一台虛擬主機,畫面上應該會有類似像下面圖片上的結果,
其中紅色方塊的地方就是能夠連到您那台主機的IP,
為了安全,千萬不要讓別人知道您主機的IP。
使用終端機的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
),駭客也無法登入這台主機,因為他的電腦上並不存在那個作為鑰匙的檔案,這會讓主機更加安全。
產生一個SSH key pair 如果之前已經產生過這個東西了,就可以跳過這一步。
下面的指令都是在我們用來連線遠端主機的那台本地電腦
上執行localUser$ ssh-keygen
假如您的本地端使用者帳號叫
localUser
,您會在terminal上看到下面這樣的文字Generating public/private rsa key pair. Enter file in which to save the key (/Users/localuser/.ssh/id_rsa):
這邊是在問您要將這把
私鑰
放在哪個位置,並且它的檔名會叫id_rsa
。
您可以在這裡改變它的存放位置跟檔名。
(但底下的說明都會先假設您接受預設設定。)再按下enter後 在這裡您可以為這支鑰匙輸入一個通關密語(passphrase),日後您在ssh遠端主機的時候,您的電腦上除了要有
id_rsa
這個私鑰以外,您還必須要輸入這個通關密語,再多加一道安全性。或是也可以在這邊直接按下enter,不輸入通關密語,之後ssh遠端主機時只要電腦裡有那組鑰匙即可。結束上面的程序之後會在
/Users/localuser/.ssh/
這個資料夾底下產生兩個檔案,id_rsa
這是私鑰 裡面的內容絕對不可以讓不該能夠進入您的server的人知道id_rsa.pub
這是公鑰
這兩個檔案是一對的,即是SSH key pair。
把公鑰放到遠端主機上
使用以下指令,就可以把剛剛產生出來的公鑰id_rsa.pub
裡的內容印在terminal上
localUser$ cat ~/.ssh/id_rsa.pub
把跑出來的內容全部複製起來。
把這個公鑰綁定在user
vip
身上。
接著,在遠端主機上,確認現在身份還是root
,然後輸入以下指令可以讓我們切換使用者為我們自己創出來的vip
su - vip
同時這會讓我們切換到
vip
的home directory底下,也就是說執行pwd
會看到
/home/vip
在這個資料夾底下創建一個叫
.ssh
的隱藏資料夾,並修改它的存取權限為只有vip
自己才能存取+執行mkdir .ssh chmod 700 .ssh
接著在
.shh
創出一個叫authorized_keys
的檔案,在這裡我們用vi
開啟它vi .ssh/authorized_keys
按下
i
以進入 插入模式,然後貼上剛剛複製存在剪貼簿裡的那一串公鑰,
再按下ESC
以離開 插入模式,
輸入:x
(代表存檔並離開 效果等同:wq
) 按下ENTER
再把
authorized_keys
這個檔案的權限改成只可存取但不可執行chmod 600 .ssh/authorized_keys
輸入以下指令,讓我們把登入的帳號從
vip
切換回root
exit
把遠端主機上的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前,先確定那個創出來的超級使用者能使用的功能一切正常
- 現在您應該可以使用SSH key pair做驗證然後用
vip
來做SSH登入了,打開一個新的terminal tab 執行這次用vip登入時,terminal上問您的就會是ssh vip@您的遠端主機的IP
id_rsa
這組SSH key pair的通關密語,而不是vip
的密碼 - 以
vip
登入時,記得要執行原本root
權限的指令時要在指令前面加上sudo
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--