Centos7 使用密鑰認證方式登入服務器

背景:

  • ssh服務支持之中安全認證機制,就是密鑰登錄,這種方式是比較安全的登入方式。
  • 一般的密碼方式登錄容易被密碼暴力破解,使用密鑰方式登入主機也是首推一種登入方式,比使用密碼的方式登錄更佳!

主要步驟說明:

  1. 使用系統自帶或工具利用密鑰生成器製作一對密鑰:一隻公鑰(id_rsa.pub)和一隻私鑰(id_rsa)
  2. 把公鑰添加到服務器 /root/.ssh/authorized_keys
  3. 客戶端(服務器、或SecureCRT 或 putty 或 xShell)利用私鑰即可完成認證並登錄

注意事項

    在還沒有驗證使用私鑰可以登入系統之前,建議開啓密碼登入和密鑰登入兩種方式,等驗證使用密鑰登入成功後,再關閉對應的禁止root登入和使用密碼登錄系統的方式。

具體的操作步驟:

第1步:在root登入的情況下執行命令:

ssh-keygen -t rsa

[root@bogon ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): (回車)

按提示說選擇保存到哪個路徑,直接按下回家即可

第2步:直接三次回車,默認保存在當前路徑下

[root@bogon ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): (回車)
Enter passphrase (empty for no passphrase): (回車)
Enter same passphrase again: (回車)
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
c5:7e:44:73:4c:1a:db:67:a8:60:f6:de:bc:58:4a:2c root@bogon
The key's randomart image is:
+--[ RSA 2048]----+
|            +oo  |
|         . . B.. |
|          * + o o|
|         = + . o |
|        S . +    |
|           + o   |
|          E + +  |
|           o + . |
|            o .  |
+-----------------+

Enter file in which to save the key (/root/.ssh/id_rsa):
該命令提示的意思是:讓我們定義私鑰的存放路徑,默認存在的路徑是在/root/.ssh/id_rsa的下面

Enter passphrase (empty for no passphrase):
該命令提示的意思是:定義私鑰的密碼,一般爲了免密默認的留空,直接的回車

Enter same passphrase again:
該命令提示的意思是:確認密碼設置

經過上面三次回車後,最後在/root/.ssh/id_rsa下面生成了公鑰和私鑰

[root@bogon ~]# cd /root/.ssh/
[root@bogon .ssh]# ll
total 12
-rw-------. 1 root root 1675 Mar  2 11:02 id_rsa(私鑰)
-rw-r--r--. 1 root root  392 Mar  2 11:02 id_rsa.pub (公鑰)
-rw-r--r--. 1 root root  176 Feb 28 07:48 known_hosts

關於是否設置密鑰的密碼信息:一般也是建議你設置,如果不設置的話,後續別人拿到你的密鑰,不輸入密碼的方式下就可以直接的使用密鑰登入了!當然,也可以留空,實現無密碼登錄。

如果設置可密碼的話,密鑰鎖碼在使用私鑰時必須輸入,這樣就可以保護私鑰不被盜用。

第3步: 服務器上安裝公鑰

主要操作是:複製公鑰內容到/root/.ssh/authorized_keys

因爲我們是使用ssh-keygen -t rsa方式生成相關密匙信息,所以此時默認的會有對應的:/root/.ssh/這個目錄存在,如果沒有的話(即使用其他ssh工具生成密鑰的時候)就需要收的創建此目錄.。另外:/root/.ssh/authorized_keys這個文件的名稱是固定不變的喲,不要寫錯了!

[root@bogon ~]# mkdir -p /root/.ssh 創建目錄
[root@bogon ~]# chmod 700 /root/.ssh 更改目錄權限
[root@bogon ~]# cat /root/.ssh/id_rsa.pub 
XXXXXXX內容信息的信息
[root@bogon ~]# nano /root/.ssh/authorized_keys ( 編輯保存退出)

或者直接的:
 [root@bogon ~]# cat id_rsa.pub >> /root/.ssh/authorized_keys
 [root@bogon ~]$ chmod 600  /root/.ssh/authorized_keys
 [root@bogon ~]$ chmod 700  /root/.ssh

或者其他方式複製到對應的服務器下:
 [root@bogon ~]$.ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 10022 user@server"
 [root@bogon ~]$.ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

 再次查看生成的文件信息

[root@bogon .ssh]# ll
total 16
-rw-r--r--. 1 root root  392 Mar  2 11:37 authorized_keys
-rw-------. 1 root root 1675 Mar  2 11:02 id_rsa
-rw-r--r--. 1 root root  392 Mar  2 11:02 id_rsa.pub
-rw-r--r--. 1 root root  176 Feb 28 07:48 known_hosts
[root@bogon .ssh]# 

 第4步:把私鑰提取出來保存到本地,方便後面使用此密鑰進行登入

[root@bogon .ssh]# sz id_rsa
rz
 zmodem trl+C ȡ
  100%       1 KB    0 KB/s 00:00:21       0 Errors

關於lrzsz的一些知識點,root 賬號登陸後執行以下命令:
    1:安裝:yum install -y lrzsz
    2:使用說明
        sz命令發送文件到本地:
        # sz filename
        rz命令本地上傳文件到服務器(執行該命令後,在彈出框中選擇要上傳的文件即可):
        # rz

 第5步:關閉SELinux(線上是否一定要關閉呢?)

PS:因爲咋們這裏是虛擬機注意!!!!注意!!!!
注意!!!! 如果是線上生產服務器的話,要注意根據實際情況進行選擇關閉喲!

因爲咋們這裏是虛擬機,而且SELinux是Centos系統自帶一種安全機制。如果我們這裏不關掉這個安全機制的話,可能會出錯。

臨時關閉:SELinux(下次重啓後還是會開啓)

[root@bogon .ssh]# setenforce 0

 徹底關閉需要:SELINUX=disabled

1:編輯
vi /etc/selinux/config  # 編輯防火牆配置文件
#SELINUX=enforcing      # 註釋掉
#SELINUXTYPE=targeted   # 註釋掉
SELINUX=disabled        # 增加
:wq!                    # 保存退出
2:讓修改生效
[root@bogon .ssh]# setenforce 0

第6步:修改SSH配置,打開密鑰登錄功能:

編輯修改 /etc/ssh/sshd_config 文件,進行如下設置:

RSAAuthentication yes # 開啓密鑰登入的認證方式
PubkeyAuthentication yes # 開啓密鑰登入的認證方式
PermitRootLogin yes #此處請留意 root 用戶能否通過 SSH 登錄,默認爲yes:
PasswordAuthentication yes #當我們完成全部設置並以密鑰方式登錄成功後,可以禁用密碼登錄。這裏我們先不禁用,先允許密碼登陸
[root@bogon .ssh]# service sshd restart  #最後,重啓 SSH 服務:

PS:關鍵修改參數一些說明(安全等級更高):

    #禁用root賬戶登錄,非必要,但爲了安全性,請配置
    PermitRootLogin no

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

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

    #有了證書登錄了,就禁用密碼登錄吧,安全要緊
    PasswordAuthentication no

第7步:然後使用SecureCRTPortable進行登入測試:

[root@bogon .ssh]# logout 

退出使用其他方式登入:

使用SecureCRTPortable進行

參考文章:小鐘鍾同學

 

發佈了38 篇原創文章 · 獲贊 43 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章