關於linux免密登錄的配置及ssh客戶端基於私鑰文件的登錄


操作系統環境: CentOS Linux release 7.7.1908 (Core)

 

1、首先在linux服務器上,使用ssh-keygen命令生成密鑰對文件(一直回車即可,默認使用rsa算法),如下所示

      其中還支持的算法有dsa | ecdsa | ed25519 | rsa | rsa1,使用其他算法只需要使用-t選項指定即可

    (The possible values are "rsa1" for protocol version 1 and "dsa", "ecdsa", "ed25519", or "rsa" for protocol version 2.)

[root@webserver ~]# ssh-keygen              # 也可以使用ssh-keygen -f /root/.ssh/id_rsa -P ''  非交互式生成密鑰對
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: SHA256:1v4uvRWnv6BSInIaRxctOat2woXxHHFyiY0yN2MKH30 root@webserver The key's randomart image is: +---[RSA 2048]----+ | .oBo. | | . = #+E | | o % X | | = B | | o S . . .| | o X + . + | | B + +. .o | | . ...o... | | .++. .o| +----[SHA256]-----+ [root@webserver ~]# 

2、如上命令所示,執行完后,會在~/.ssh目錄下生成id_rsa(私鑰文件)和id_rsa.pub(公鑰文件)

3、然后將公鑰文件內容,追加到sshd配置文件中AuthorizedKeysFile指令定義的文件,其默認值為.ssh/authorized_keys文件

[root@webserver ~]# cd 
[root@webserver ~]# cat .ssh/id_rsa.pub >> .ssh/authorized_keys

4、當然至此,服務器公鑰文件即使刪除了也是可以的,而私鑰則是給客戶端使用的,交給客戶端后,對服務器本身來說也是非必須的

 

然后ssh客戶端就可以直接使用私鑰文件免密碼登錄服務器了

客戶端取得私鑰文件后,可以對其重命名,以達到見名知義的效果,如 webserver_id_rsa.pem

 

對於linux系統的ssh客戶端

只需要使用ssh -i 私鑰文件  user@host 即可以訪問,如下,其中192.168.100.128為上面的webserver:

需要特別注意,私鑰文件的權限最好設置為0400,即只允許文件的擁有者有讀的權限(當然測試600,700也可以的,不推薦)

如果文件的所屬組和其他人有任何權限,使用私鑰登錄都會登錄失敗,報錯!

[root@client ~]# ssh -i webserver_id_rsa.pem root@192.168.100.128
Last login: Thu Jun  4 22:16:57 2020 from 192.168.100.89 [root@webserver ~]# 

另外有時,也會看到有人不用-i指定密鑰也是可以免密登錄,這是由於ssh客戶端配置文件/etc/ssh/ssh_config,

默認有IdentityFile指令,指定了私鑰文件,雖然是注釋狀態的,卻默認包含了這些文件

如# IdentityFile ~/.ssh/identity(還有~/.ssh/id_rsa、~/.ssh/id_dsa、~/.ssh/id_ecdsa、~/.ssh/id_ed25519)

大部分情況是自己生成密鑰對,通過ssh-copy-id  -i 公鑰文件  user@host 傳遞到遠端服務器的~/.ssh/authorized_keys

而此時ssh去連接遠程主機時,剛好私鑰文件,就是剛生成的~/.ssh/id_rsa,所以就不用特意指定,當然也可能客戶端配置明確指定了私鑰文件

 

對於windows系統下的xshell客戶端

只需要在登錄彈窗的Public Key(U) 處通過瀏覽選擇私鑰文件,或者直接導入私鑰,以后就可以直接在下拉中可以看到!

特別注意,這里的Public Key(U) 不要根據這個名稱,誤以為公鑰文件,始終記住,客戶端登錄服務器,是使用私鑰即可!

 

putty客戶端

對於putty客戶端來講,不能直接使用pem格式的私鑰文件(.pem屬於OpenSSH格式的密鑰)

需要先使用puttygen.exe小程序將pem格式的私鑰文件,轉換成putty所能識別的.ppk格式(PuTTY Private Key)

 

尊重別人的勞動成果 轉載請務必注明出處:https://www.cnblogs.com/5201351/p/13047171.html

 


免責聲明!

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



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