1. 程式人生 > >CentOS6.9下ssh密鑰登錄配置步驟(免密碼登錄)和ssh-keygen 命令常用參數

CentOS6.9下ssh密鑰登錄配置步驟(免密碼登錄)和ssh-keygen 命令常用參數

通過 str ssh 其他 添加 ip地址 login strong 私有

密鑰登錄步驟(免密碼登錄)
ssh登錄提供兩種認證方式:口令(密碼)認證方式和密鑰認證方式。其中口令(密碼)認證方式是我們最常用的一種,出於安全方面的考慮,介紹密鑰認證方式登錄到linux/unix的方法。
使用密鑰登錄分為3步:
1、生成密鑰(公鑰與私鑰);
2、放置公鑰到服務器~/.ssh/authorized_key文件中;
3、配置ssh客戶端使用密鑰登錄。
---------------------

一、通過ssh-keygen命令生成密鑰對,密鑰類型為RSA,也可以通過其他軟件生產密鑰對。
==========================================================================


pipci@ubuntu:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/pipci/.ssh/id_rsa): <==這裏輸入私鑰名,直接回車就可以名字就為括號中默認的名字
Enter passphrase (empty for no passphrase): <==輸入密碼,自動登錄設置為空,直接回車就可以

Enter same passphrase again: <==輸入確認密碼,直接回車就可以
Your identification has been saved in /home/pipci/.ssh/id_rsa. <==生成的私鑰名和位置
Your public key has been saved in /home/pipci/.ssh/id_rsa.pub. <==生成的公鑰名和位置
The key fingerprint is:
SHA256:Hsi5oo0Yr1a9eXtgNeLlu/UAJx1EiH34Gghv96FeXEs pipci@ubuntu

The key‘s randomart image is:
+---[RSA 2048]----+ <==密鑰的位數
| o +o |
| . . +.. |
| o . o. |
| . B *.o.E |
| . * SoBo+ . |
| . . * =++ . |
|. . . = + oo |
| = + + . +. o |
|+.+ . ..o.. . |
+----[SHA256]-----+
pipci@ubuntu:~$
===================================================================

查看生成的密鑰文件:
===================================================================
pipci@ubuntu:~$ ls -l .ssh/
-rw------- 1 pipci pipci 1679 10月 19 11:45 id_rsa
-rw-r--r-- 1 pipci pipci 394 10月 19 11:45 id_rsa.pub
pipci@ubuntu:~$
===================================================================

註意兩點:

1、生成密鑰對輸入密碼的作用是保護本地私有密鑰的密碼,也就是說,即使有人到用了你的計算機或私鑰文件,沒有這個密碼依然不能使用你的私鑰,在使用密鑰登錄時候也會要求你輸入密碼,這個密碼就是生成密鑰對時候輸入的密碼,用來解鎖私鑰文件,密碼最低5個字符。

2、生成密鑰對的私鑰權限必須是600公鑰權限是644,即只能本人可以查看私鑰文件,除了本人以外的任何用戶都不能產看,別人可以查看也就意味著任何人都可以通過這個私鑰登錄了,顯然這是不安全的,公鑰可以隨便查看,但是不能修改內容,修改了還怎麽配對登錄。同時密鑰對的父目錄.ssh的權限必須是700即只有本人可以查看和進入。如果是通過命令新創建的.ssh默認就是700權限,創建完查看下就可以,如果不是更改權限。如果不是上面說的權限,客戶端登錄時候可能會出錯。


二、通過scp命令將id_rsa.pub公鑰文件復制到遠程服務器:
====================================================================
pipci@ubuntu:~$ scp /home/pipci/.ssh/id_rsa.pub [email protected]:/home/laopi/.ssh/
[email protected]‘s password:
id_rsa.pub 100% 394 0.4KB/s 00:00
pipci@ubuntu:~$
=====================================================================
通過scp命令復制,前提是遠程服務器已經開啟ssh密碼登錄,將公鑰文件復制到用來管理用戶主目錄下面的.ssh目錄如果不存在先創建這個目錄。這個.ssh的目錄權限
必須設置成700要不然登錄會提示沒有權限的錯誤,上面的例子遠程服務器的ip地址為192.168.1.166用戶名為laopi(普通用戶)


三、遠程服務器的配置

1、將上傳的公鑰文件導成或重命名成authorized_keys文件或
[laopi@CentOS ~]$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys #導成

2、編輯ssh的配置文件。

vim /etc/ssh/sshd_config

要確保下面這兩項目前面沒有#使之生效
---------------------------------------------------------------
PubkeyAuthentication yes #允許公鑰認證

AuthorizedKeysFile .ssh/authorized_keys #指定包含用於用戶身份驗證的公鑰的文件
---------------------------------------------------------------
為了安全考慮禁用root賬戶登錄
PermitRootLogin no #選項前面可以加#號註釋掉,同樣會禁用root用戶

有了證書登錄了,就禁用密碼登錄吧,安全要緊
PasswordAuthentication no #選項前面可以加#號註釋掉,同樣會禁用密碼登錄

重啟一下ssh服務,這樣ssh配置才能生效:

[root@CentOS ~]# service sshd restart

四、ssh-keygen 命令常用參數

$ ssh-keygen 參數

常用參數:
-t 指定要創建的密鑰類型,如:-t dsa(SSH-2) | ecdsa | ed25519 | rsa(SSH-2)| rsa1(SSH-1)

-b bits 指定密鑰長度。對於 RSA 密鑰,最小要求 768 位,默認是 2048 位

-C comment 提供一個註釋。

-N new_passphrase 提供一個新的密語。

-F hostname
在 known_hosts 文件中搜索指定的 hostname ,並列出所有的匹配項。 這個選項主要用於查找散列過的主機名/ip地址,還可以和 -H 選項聯用打印找到的公鑰的散列值。

-H 對 known_hosts 文件進行散列計算。這將把文件中的所有主機名/ip地址替換為相應的散列值。原來文件的內容將會添加一個".old"後綴後保存。這些散列值只能被 ssh 和 sshd 使用。這個選項不會修改已經經過散列的主機名/ip地址,因此可以在部分公鑰已經散列過的文件上安全使用。

-R hostname
從 known_hosts 文件中刪除所有屬於 hostname 的密鑰。這個選項主要用於刪除經過散列的主機(參見 -H 選項)的密鑰。

-f filename 指定密鑰文件名

-l 顯示公鑰文件的指紋數據。它也支持 RSA1 的私鑰。對於 RSA 和 DSA 密鑰,將會尋找對應的公鑰文件,然後顯示其指紋數據。

1、查看id_rsa.pub的公鑰指紋
pipci@ubuntu:~$ ssh-keygen -lf .ssh/id_rsa.pub
2048 SHA256:Hsi5oo0Yr1a9eXtgNeLlu/UAJx1EiH34Gghv96FeXEs pipci@ubuntu (RSA)

1、用 md5 的方式查看指紋數據
pipci@ubuntu:~$ ssh-keygen -E md5 -lf .ssh/id_rsa.pub
2048 MD5:fa:ba:4b:35:18:7f:5f:94:f0:6b:b5:7a:89:98:f9:a5 pipci@ubuntu (RSA)









CentOS6.9下ssh密鑰登錄配置步驟(免密碼登錄)和ssh-keygen 命令常用參數