您好,登錄后才能下訂單哦!
????????在我們平時使用Linux系統時候,通常使用的Linux SSH登錄方式是用戶名加密碼的登錄方式,今天來探討另外的一種相對安全的登錄方式——密鑰登錄。
? ? ????我們知道SSH登錄是用的RSA非對稱加密的,所以我們在SSH登錄的時候就可以使用RSA密鑰登錄,SSH有專門創建SSH密鑰的工具ssh-keygen,下面就來一睹風采。
? ? ????首先進入Linux系統的用戶目錄下的,查看當中原來并沒有所謂的秘鑰文件夾。
????? ?這邊要使用到的有兩條命令,一條是ssh-keygen跟ssh-copy-id,這兩條命令具體的選項如下:
ssh-keygen可用的參數選項有:
?
? ? ?-a trials
? ? ? ? ? ? ?在使用 -T 對 DH-GEX 候選素數進行安全篩選時需要執行的基本測試數量。
? ? ? -B ? ? ?顯示指定的公鑰/私鑰文件的 bubblebabble 摘要。
? ? ? -b bits
? ? ? ? ? ? ?指定密鑰長度。對于RSA密鑰,最小要求768位,默認是2048位。DSA密鑰必須恰好是1024位(FIPS 186-2 標準的要求)。
? ? ? -C comment
? ? ? ? ? ? ?提供一個新注釋
? ? ? -c ? ? ?要求修改私鑰和公鑰文件中的注釋。本選項只支持 RSA1 密鑰。
? ? ? ? ? ? ?程序將提示輸入私鑰文件名、密語(如果存在)、新注釋。
? ? ? -D reader
? ? ? ? ? ? ?下載存儲在智能卡 reader 里的 RSA 公鑰。
? ? ?-e ? ? ?讀取OpenSSH的私鑰或公鑰文件,并以 RFC ?SSH 公鑰文件格式在 stdout 上顯示出來。
? ? ? ? ? ? ?該選項能夠為多種商業版本的 SSH 輸出密鑰。
? ? ? -F hostname
? ? ? ? ? ? ?在 known_hosts 文件中搜索指定的 hostname ,并列出所有的匹配項。
? ? ? ? ? ? ?這個選項主要用于查找散列過的主機名/ip地址,還可以和 -H 選項聯用打印找到的公鑰的散列值。
?
? ? ?-f filename
? ? ? ? ? ? ?指定密鑰文件名。
?
? ? ?-G output_file
? ? ? ? ? ? ?為 DH-GEX 產生候選素數。這些素數必須在使用之前使用 -T 選項進行安全篩選。
?
? ? ?-g ? ? ?在使用 -r 打印指紋資源記錄的時候使用通用的 DNS 格式。
?
? ? ?-H ? ? ?對 known_hosts 文件進行散列計算。這將把文件中的所有主機名/ip地址替換為相應的散列值。
? ? ? ? ? ? ?原來文件的內容將會添加一個".old"后綴后保存。這些散列值只能被 ssh 和 sshd 使用。
? ? ? ? ? ? ?這個選項不會修改已經經過散列的主機名/ip地址,因此可以在部分公鑰已經散列過的文件上安全使用。
?
? ? ?-i ? ? ?讀取未加密的SSH-2兼容的私鑰/公鑰文件,然后在 stdout 顯示OpenSSH兼容的私鑰/公鑰。
? ? ? ? ? ? ?該選項主要用于從多種商業版本的SSH中導入密鑰。
?
? ? ?-l ? ? ?顯示公鑰文件的指紋數據。它也支持 RSA1 的私鑰。
? ? ? ? ? ? ?對于RSA和DSA密鑰,將會尋找對應的公鑰文件,然后顯示其指紋數據。
?
? ? ?-M memory
? ? ? ? ? ? ?指定在生成 DH-GEXS 候選素數的時候最大內存用量(MB)。
?
? ? ?-N new_passphrase
? ? ? ? ? ? ?提供一個新的密語。
?
? ? ?-P passphrase
? ? ? ? ? ? ?提供(舊)密語。
?
? ? ?-p ? ? ?要求改變某私鑰文件的密語而不重建私鑰。程序將提示輸入私鑰文件名、原來的密語、以及兩次輸入新密語。
?
? ? ?-q ? ? ?安靜模式。用于在 /etc/rc 中創建新密鑰的時候。
?
? ? ?-R hostname
? ? ? ? ? ? ?從 known_hosts 文件中刪除所有屬于 hostname 的密鑰。
? ? ? ? ? ? ?這個選項主要用于刪除經過散列的主機(參見 -H 選項)的密鑰。
?
? ? ?-r hostname
? ? ? ? ? ? ?打印名為 hostname 的公鑰文件的 SSHFP 指紋資源記錄。
?
? ? ?-S start
? ? ? ? ? ? ?指定在生成 DH-GEX 候選模數時的起始點(16進制)。
?
? ? ?-T output_file
? ? ? ? ? ? ?測試 Diffie-Hellman group exchange 候選素數(由 -G 選項生成)的安全性。
?
? ? ?-t type
? ? ? ? ? ? ?指定要創建的密鑰類型。可以使用:"rsa1"(SSH-1) "rsa"(SSH-2) "dsa"(SSH-2)
?
? ? ?-U reader
? ? ? ? ? ? ?把現存的RSA私鑰上傳到智能卡 reader
?
? ? ?-v ? ? ?詳細模式。ssh-keygen 將會輸出處理過程的詳細調試信息。常用于調試模數的產生過程。
? ? ? ? ? ? ?重復使用多個 -v 選項將會增加信息的詳細程度(最大3次)。
?
? ? ?-W generator
? ? ? ? ? ? ?指定在為 DH-GEX 測試候選模數時想要使用的 generator
?
? ? ?-y ? ? ?讀取OpenSSH專有格式的公鑰文件,并將OpenSSH公鑰顯示在 stdout 上。
sh-copy-id的參數有:
?
? ? -i #指定密鑰文件
? ? -p #指定端口,默認端口號是22
? ? -o <ssh -o options>
? ? user@]hostname #用戶名@主機名
? ? -f: force mode -- copy keys without trying to check if they are already installed
? ? -n: dry run ? ?-- no keys are actually copied
? ? -h|-?: 顯示幫助
????????????????
????????接下來我們創建一個秘鑰,使用ssh-keygen -t rsa生成一個rsa的非對稱秘鑰。
????????我這邊設置了一個比較簡單的5位密碼作為測試,12345。
????????接著進入賬戶的家目錄,使用ls -a查看已經看到秘鑰文件夾已經生成。
????????接著進入秘鑰文件夾查看,已經看到生成的私鑰跟秘鑰的文件。
????????接著要使用ssh-copy命令把公鑰推送到想要登陸的主機上邊去。具體命令格式為:ssh-copy-id -i 指定推送公鑰文件 用戶名@對方IP地址。
????????接著我們用root賬戶去登陸對方的主機。這邊提示讓你輸入秘鑰的密碼,而不是讓你輸入對方ROOT賬戶的密碼,現在這么一個秘鑰登陸的功能就已經實現了。
????? ? 不管是輸入秘鑰密碼還是輸入對方root賬戶的密碼,這邊都是需要進行人機交互的,怎么要才能實現免人機交互呢。這邊要使用ssh-agent bash跟ssh-add命令。
????????
????????最后再嘗試用root賬戶登陸對方的主機,發現免交互登陸的功能已經實現了。其實實現免交互登陸功能還有一個更方便的方法,就是在設置密碼的時候不輸入任何密碼也就是創建一個空密碼,然后直接拷貝過去就可以了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。