遠程登錄服務器配置


ssh密鑰對認證

以非根用戶deploy 身份登錄服務器

$ ssh deploy@192.168.33.30

這個命令會要求你輸入deploy用戶的密碼,然后登錄服務器。我們可以禁用密碼認證,
加強安全。密碼認證有漏洞,會受到暴力攻擊,不懷好意的人會不斷嘗試猜測你的密
碼。使用s登錄服務器時應該使用SSH密鑰對認證。

密鑰對認證是個復雜的話題。簡單來說,我們在本地設備中創建一對“密鑰”,其中
個是私鑰(保存在本地設備中),另一個是公鑰(傳到遠程服務器中)。之所以叫密鑰
對,是因為使用公鑰加密的消息只能使用對應的私鑰解密使用SSH密鑰對認證方式登錄遠程設備時,遠程設備會隨機創建一個消息,使用公鑰加
密,然后把密文發給本地設備。本地設備收到密文后使用私鑰解密,然后把解密后的消
息發給遠程服務器。遠程服務器驗證解密后的消息之后,再賦予你訪問服務器的權限
我極大地簡化了這個過程,不過相信你已經掌握要點了

如果要在多台電腦中登錄遠程服務器,或許不應該使用SSH密鑰對認證。如果想這么
做,要在每台本地電腦中生成SSH密鑰對,然后再把每個密鑰對中的公鑰復制到遠程服
務器中。遇到這種情況,或許最好使用安全的密碼進行密碼認證。然而,如果只通過
台本地電腦訪問遠程服務器(很多開發者都是這樣),SSH密鑰對認證是最好的方式。

創建秘鑰對

本地設備

$ ssh-keygen

按照屏幕上顯示的內容,根據提示輸入所需的信息。

會在本地設備中創建兩個文件:~/.ssh/id_rsa.pub(公鑰) 和 ~/.ssh/id_rsa (私鑰)。私鑰應保存於本地電腦中,且需保密。公鑰必須復制到服務器中,可使用scp(安全復制)命令復制公鑰:

$ scp ~/.ssh/id_rsa.pub deploy@192.168.33.30:

切記末尾加上:! 此命令會把公鑰復制到遠程服務器中deploy用戶的家目錄中。

遠程服務器設置,通過信任公鑰

下面以deploy用戶的身份登錄遠程服務器。登錄后,確認~/.ssh目錄是否存在,不存在創建:

$ mkdir ~/.ssh

創建~/.ssh/authorized_keys

$ touch ~/.ssh/authorized_keys

把上傳的公鑰添加到~/.ssh/authorized_keys文件中:

$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

最后,修改目錄及文件的訪問權限,只讓deploy用戶訪問~/.ssh目錄和~/.ssh/authorized_keys。

$ chown -R deploy:deploy ~/.ssh;
$ chmod 700 ~/.ssh;
$ chmod 600 ~/.ssh/authorized_keys;

配置完成,現在可通過ssh登錄遠程服務器。

禁用密碼,禁止根用戶登錄

讓遠程服務器再安全一些。我們要禁止所有用戶通過密碼認證登錄,還要禁止
根用戶登錄。記住,根用戶能做任何事,所以我們要盡量不讓根用戶訪問服務器。
以 deploy用戶的身份登錄遠程服務器,然后在你喜歡的文本編輯器中打開/ etc/ssh/sshd
_config文件。這是SSH服務器軟件的配置文件。找到 PasswordAuthentication設置,將其
值改為no;如果需要,去掉這個設置的注釋。然后,找到 PermitRootlogin設置,將其
值改為no;如果需要,去掉這個設置的注釋。保存改動,然后執行下述命令重啟SSH服
務器,讓改動生效:

sudo service ssh restart
sudo systemctl restart sshd. service

現在必須通過ssh密鑰對連接服務器,並且用戶非root。

實際使用中

我待過的公司的做法,定期的對 root或者其他賬戶的密碼進行修改,然后都是通過秘鑰


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM