1. 程式人生 > >伺服器配置ssh免密登陸

伺服器配置ssh免密登陸

之前為了測試方便,買了個國內的低配VPS用於部署java測試,配置為1核2G、2M頻寬上線、20GSSD,雖然是個乞丐版的配置,但是部署一下幾個常用服務端程式還是差不多夠了。然後當天,我一心歡喜的裝上JDK、mysql、zookeeper等程式,但是之後一個禮拜不到,我發現我的VPS越來越卡,ssh連線很大概率被拒絕,連上去一個ls命令,都要接近五秒才能響應,有時候直接卡死了,但是自己也就裝了這了了幾個程式,不至於把伺服器搞成這個樣子。然後我使用ifconfig命令看了一下,然後發現短短兩天的時間,伺服器接受資料達到84G、傳送資料達到6G,考慮到我這個乞丐版VPS的限寬因素,相當於我的VPS一直在接受傳送資料。這時候我意識到,應該是伺服器被黑了,然後top命令看了一下,有幾個同名程序還在執行,叫gpg-agentd。後來看了一下內容,確定是被黑了(其實我之前試過殺程序 + 重啟伺服器),這玩意還帶自動重啟的,後來實在沒轍了選擇了重灌系統加一些ssh的安全維護,主要是修改ssh埠(22埠很容易就被暴力掃描了) + 免密ssh登陸(使用公鑰驗證)。本篇文章,我就先介紹一下伺服器ssh埠修改方法,及免密登陸配置,之後會用幾片文章介紹一下伺服器的其他常用軟體安裝配置。

1. 修改ssh埠號

ssh的預設埠是22,如果使用預設埠的話,很容易被暴力掃描,我這次VPS被黑就是因為這個原因,所以建議拿到伺服器之後,第一時間修改一下ssh埠,方法如下:

# vi開啟ssh配置檔案
vi /etc/ssh/sshd_config

# 找到埠配置那一行
Port 22

# 將埠修改為自己想要修改的埠,注意不要佔用常用埠,比如80、8080、443、3306、2181這種
Port ****

# wq儲存

# 重啟ssh服務
service ssh restart

2. ssh免密登陸配置

一般的密碼方式登入容易被密碼暴力破解,所以可以通過金鑰登入這種方式來更好地保證安全。金鑰形式登入的原理是:利用金鑰生成器製作一對金鑰——一隻公鑰和一隻私鑰。將公鑰新增到伺服器的某個賬戶上,然後在客戶端利用私鑰即可完成認證並登入。這樣一來,沒有私鑰,任何人都無法通過 SSH 暴力破解你的密碼來遠端登入到系統。此外,如果將公鑰複製到其他賬戶甚至主機,利用私鑰也可以登入。

2.1 製作金鑰對

首先在伺服器上製作金鑰對。首先用密碼登入到你打算使用金鑰登入的賬戶,然後執行以下命令,中間所有的提示都可以直接按Enter:

[[email protected] ~]$ ssh-keygen  <== 建立金鑰對

現在,在 root 目錄中生成了一個 .ssh 的隱藏目錄,內含兩個金鑰檔案。id_rsa 為私鑰,id_rsa.pub 為公鑰。

2.2 安裝公鑰

將需要訪問伺服器的主機公鑰複製到到伺服器,如下:

[[email protected] ~]$ cd .ssh
將公鑰複製到.ssh目錄下的authorized_keys檔案中,如果不存在該檔案,則新建一個

修改檔案許可權
[
[email protected]
.ssh]$ chmod 600 authorized_keys [[email protected] .ssh]$ chmod 700 ~/.ssh

2.3 ssh設定,開啟金鑰登入功能

編輯 /etc/ssh/sshd_config 檔案,進行如下設定:

#禁用root賬戶登入,如果是用root使用者登入請開啟
PermitRootLogin yes

# 是否讓 sshd 去檢查使用者家目錄或相關檔案的許可權資料,
# 這是為了擔心使用者將某些重要檔案的許可權設錯,可能會導致一些問題所致。
# 例如使用者的 ~.ssh/ 許可權設錯時,某些特殊情況下會不許使用者登入
StrictModes no

# 是否允許使用者自行使用成對的金鑰系統進行登入行為,僅針對 version 2。
# 至於自制的公鑰資料就放置於使用者家目錄下的 .ssh/authorized_keys 內
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

# 有了證書登入了,就禁用密碼登入。
PasswordAuthentication no

2.4 重啟sshd服務

service sshd restart

2.5 金鑰登陸伺服器

ssh 使用者名稱@伺服器ip -p 埠

如果是SecureCrt使用者,則需要如下操作: