linux ssh publickey登錄


一、公鑰認證的基本思想:

對信息的加密和解密采用不同的key,這對key分別稱作private key和public key,其中,public key存放在目標服務器上,而private key為特定的客戶機所持有。

當客戶機向服務器發出建立安全連接的請求時,首先發送自己的public key,如果這個public key是被服務器所允許的,服務器就發送一個經過public key加密的隨機數據給客戶機,這個數據只能通過private key解密,客戶機將解密后的信息發還給服務器,服務器驗證正確后即確認客戶機是可信任的,從而建立起一條安全的信息通道。

通過這種方式,客戶機不需要向外發送自己的身份標志“private key”即可達到校驗的目的,並且private key是不能通過public key反向推斷出來的。這避免了網絡竊聽可能造成的密碼泄露。客戶機需要小心的保存自己的private key,以免被其他人竊取,一旦這樣的事情發生,就需要各服務器更換受信的public key列表。

二、無密碼登錄實現方式(server1 publickey連接server2免密碼登錄)

1、用ssh-keygen創建公鑰(server1)

[root@server1 ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key(/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
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:
7b:aa:08:a0:99:fc:d9:cc:d8:2e:4b:1a:c0:6b:da:e4root@Server1
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
|. |
|o. S |
|++. . |
|+=o. . . |
|o+=oB. o |
|..E==*... |
+-----------------+ 

補充說明 ssh-keygen:生成秘鑰,其中:
  -t指定算法
  -f 指定生成秘鑰路徑
  -N 指定密碼

2、查看生成證書:

[root@server1]$ ll /root/.ssh/
total 16
-rw------- 1 yida yida 1675 Mar 31 11:42 id_rsa
-rw-r--r-- 1 yida yida  399 Mar 31 11:42 id_rsa.pub

3、將server1 publickey復制到server2 authorized_keys,需要輸入server2 root用戶密碼

[root@server1 .ssh]$ ssh-copy-id -i id_rsa.pub root@10.207.0.179
The authenticity of host '10.207.0.179 (10.207.0.179)' can't be established.
RSA key fingerprint is 94:5f:47:a8:ae:0b:b0:31:0f:ce:6b:86:08:51:98:a7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.207.0.179' (RSA) to the list of known hosts.
Address 10.207.0.179 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
Password:
Now try logging into the machine, with "ssh 'root@10.207.0.179'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

[yida@yw_d10075798 .ssh]$

4、server2 查看public key文件

[root@server2]$ ll
total 16
-rw------- 1 root root  408 Mar 30 15:43 authorized_keys

5、實現server1登錄server2免密碼登錄 

ssh-keygen -t rsa -f /root/test/root.pem -b 2048 -P "XXXXX"

三、SecureCRT客戶端使用publickey登錄linux

方法一:服務器端生成公鑰私鑰文件,保留公鑰文件為authorized_keys,下載公鑰私鑰文件到客戶端本地,提供給secureCRT連接使用。

1、用ssh-keygen創建公鑰(server1)

[root@server1 ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key(/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
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:
7b:aa:08:a0:99:fc:d9:cc:d8:2e:4b:1a:c0:6b:da:e4root@Server1
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
|. |
|o. S |
|++. . |
|+=o. . . |
|o+=oB. o |
|..E==*... |
+-----------------+ 

[root@server1]$ ll /root/.ssh/
total 16
-rw------- 1 yida yida 1675 Mar 31 11:42 id_rsa
-rw-r--r-- 1 yida yida  399 Mar 31 11:42 id_rsa.pub

2、發送公鑰私鑰到本地,修改公鑰為授權證書文件

[root@.ssh~]#sz id_rsa id_rsa.pub

[root@.ssh~]#mv id_rsa.pub authorized_keys

3、設置secureCRT連接

image

注意生成在server1生成證書時passphrase設置,同時一定要把公鑰私鑰文件放在本地同一目錄下,否則會出現以下報錯

image

4、登陸成功

image

方法二:在secureCRT客戶端生成通用openssh key format公鑰私鑰文件,並將公鑰文件復制到server端authorized_keys文件。

image

image

image

image

image

 


免責聲明!

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



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