轉自:http://blog.sina.com.cn/s/blog_6561ca8c0102vb0d.html
一、 密鑰簡介
在Linux下,遠程登錄系統有兩種認證方式:密碼認證和密鑰認證。密碼認證方式是一種傳統的安全策略。設置一個相對復雜的密碼,對系統安全能起到一定的防護作用,但是也面臨一些其他問題,例如密碼暴力破解、密碼泄露、密碼丟失等,同時過於復雜的密碼也會對運維工作造成一定的負擔。
密鑰認證是一種新型的認證方式,公用密鑰存儲在遠程服務器上,專用密鑰保存在本地,當需要登錄系統時,通過本地專用密鑰和遠程服務器的公用密鑰進行配對認證,如果認證成功,就可以成功登錄系統。這種認證方式避免了被暴力破解的危險,同時只要保存在本地的專用密鑰不被黑客盜用,攻擊者一般無法通過密鑰認證的方式進入系統。
二、 服務器端密鑰的生成和配置
OpenSSH的密鑰認證體系有兩種:RSA和DSA,分別是兩種不同的加解密算法。T710服務器中管理員主要采用RSA密鑰認證。用戶在使用初始密鑰登錄后,可自行修改使用其他密鑰認證方法。
服務器端RSA密鑰的生成和配置步驟如下:
1. 在用戶目錄下新建一個.ssh目錄,並將其目錄權限改為700(僅用戶自身有讀寫操作權限):
# mkdir .ssh
# chmod 700 .ssh
2. 進入.ssh目錄,使用ssh-keygen命令生成rsa密鑰對:
# ssh-keygen –t rsa (一路回車即可)
3. 這時生成了兩個文件:id_rsa和id_rsa.pub,其中前一個為私鑰,后一個為公鑰,公鑰須保留在服務器上,私鑰拷貝到客戶端機器上
4. 在.ssh目錄中新建一個文件名為:authorized_keys,將公鑰內容拷貝到這個文件中,並將文件權限改為600(僅用戶自身有讀寫權限)
# touch authorized_keys
# cat id_rsa.pub >> authorized_keys
# chmod 600 authorzied_keys
到此,服務器端的密鑰設置完成,這里需注意要保證.ssh和authorized_keys都僅用戶自身有寫權限,否則驗證無效,這也是系統處於安全性考慮做的設置。
三、客戶端密鑰的設置
首先我們需要將在服務器端生成的私鑰id_rsa拷貝到要用來登錄服務器的客戶端電腦。接下來根據客戶端電腦操作系統的不同進行分別說明:
Windows系統
在Windows系統下,一般我們采用不同的X server工具來登錄,需要先將私鑰導入到登錄工具的密鑰管理器,建立一個新的連接,用戶名和主機的填寫與采用用戶名密碼登錄一樣,登錄不再選擇”Password”而是”Public key",User Name填寫自己的登錄用戶名,User Key選擇之前導入的服務器私鑰 ,保存之后,即可無密碼登錄。
Linux系統
Linux系統下設置同樣先將服務器私鑰拷貝到客戶端
1. 與服務器端一樣,在用戶目錄下新建一個.ssh目錄,並將其目錄權限改為700(僅用戶自身有讀寫操作權限):
# mkdir .ssh
# chmod 700 .ssh
2. 將私鑰id_rsa拷貝到.ssh目錄下,檢查文件權限是否為600,如果不是,需要更改文件權限為600
# mv id_rsa ./.ssh
# chmod 600 id_rsa
3. 這時即設置完畢,輸入ssh命令,即可直接連接到服務器,無需輸入用戶名密碼
# ssh –l 用戶名 服務器IP
4. 如果需要從客戶端通過密鑰認證的方式登錄不同的服務器,私鑰的名稱不能都是用id_rsa,這是可以在.ssh目錄下建立一個config文件來進行區分,config文件權限同樣設為600
# touch config
# chmod 600 config
5. 為config文件添加內容如下:
User username //username 填寫自己的登錄用戶名
Host server_IP //設置服務器IP
IdentityFile ~/.ssh/rsa_file //rsa_file填寫私鑰名稱
Port 22
這樣,用戶可以將私鑰id_rsa改為與config文件中irs_file同名的文件名,就可以匹配登錄服務器了。
Linux禁止root賬戶遠程登錄
Linux系統中,root用戶幾乎擁有所有的權限,遠高於Windows系統中的administrator用戶權限。一旦root用戶信息被泄露,對於我們的服務器來說將是極為致命的威脅。所以禁止root用戶通過ssh的方式進行遠程登錄,這樣可以極大的提高服務器的安全性,即使是root用戶密碼泄露出去也能夠保障服務器的安全。就下來,就由專業運營香港服務器、美國服務器、韓國服務器等國外服務器的天下數據為大家詳細介紹如何禁止ROOT用戶通過SSH方式遠程登錄。
首先創建一個doiido普通用戶加入到相應的組
這里必須要新建一個用戶,否則將會造成無法通過遠程ssh登錄服務器
# groupadd doiido
# useradd -g doiido doiido
更改用戶 doiido 的密碼
# passwd doiido
然后修改sshd_config文件
# sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
最后重啟ssh服務
# service sshd restart
這樣即使root用戶密碼泄漏,別人也無法通過root用戶直接連接服務器。