背景:
- ssh服務支持之中安全認證機制,就是密鑰登錄,這種方式是比較安全的登入方式。
- 一般的密碼方式登錄容易被密碼暴力破解,使用密鑰方式登入主機也是首推一種登入方式,比使用密碼的方式登錄更佳!
主要步驟說明:
- 使用系統自帶或工具利用密鑰生成器製作一對密鑰:一隻公鑰(id_rsa.pub)和一隻私鑰(id_rsa)
- 把公鑰添加到服務器 /root/.ssh/authorized_keys
- 客戶端(服務器、或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進行
參考文章:小鐘鍾同學