SSH的英文全稱是Secure SHell。通過使用SSH,你可以把所有傳輸的數據進行加密,這樣“中間人”這種攻擊方式就不可能實現了,而且也能夠防止DNS和IP欺騙。還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替telnet,又可以為ftp、pop、甚至ppp提供一個安全的“通道”
最初SSH是由芬蘭的一家公司開發的。但是因為受版權和加密算法的限制,現在很多人都轉而使用OpenSSH
OpenSSH是SSH協議的開源版本(SSH:Secure SHell)。
今天為大家介紹下如何在Windows系統下安裝OpenSSH并通過ssh-keygen命令生成密鑰;
一、下載OpenSSH

二、安裝OpenSSH
1、語言選擇:中文、英文都可以

下一步

“接受協議”繼續

這里因為我們是使用SSH連接Linux所以只需要客戶端就可以了,取消“服務器端”的選擇

完成Windows下的openssh安裝

三、測試SSH是否安裝成功
進入windows的命令行工具,輸入ssh命令,出現下面信息即表示我們安裝成功

四、利用ssh-keygen命令生成密鑰對(公鑰及對應的私鑰)
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 4716 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 上。
我們常用的參數基本上是下面幾個:
-t:指定要創建的密鑰類型。可以使用:"rsa1"(SSH-1) "rsa"(SSH-2) "dsa"(SSH-2);默認是RSA
-b:指定密鑰長度。對于RSA密鑰,最小要求768位,默認是2048位。DSA密鑰必須恰好是1024位(FIPS 186-2 標準的要求)。
-f :指定密鑰文件名
-C:指定密鑰注釋
在命令行工具中輸入“ssh-keygen -t rsa -b 4096 -C "192.168.1.1"” 提示以下信息,這里我設置密鑰位數為4096默認為2048
Microsoft Windows [版本 6.1.7601]
版權所有 (c) 2009 Microsoft Corporation。保留所有權利。
C:\Users\Administrator>ssh-keygen -t rsa -b 4096 -C "192.168.1.1"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/Administrator1/.ssh/id_rsa): key #這里輸入文件名windows下必須輸入,如果不輸入會出現錯誤
Enter passphrase (empty for no passphrase):#輸入密鑰密語可以理解成密鑰的密碼,可以不輸入
Enter same passphrase again:#再次輸入密鑰密碼
Your identification has been saved in key.
Your public key has been saved in key.pub.
The key fingerprint is:
SHA256:Ke9MH5QsT19TJqQgimryAn27Vp+MuIFeIff/2VL6hQE 192.168.1.1
The key's randomart image is:
+---[RSA 4096]----+
| . . . |
| . . . . o |
| . . E . . o|
| . . o o + |
|o = + . S = . o |
|.+ = +.o = ..+ . |
|. o +o.+o.ooo . |
| o .oo.=+.o+ . |
| ..o. +.+oo |
+----[SHA256]-----+
C:\Users\Administrator>
完成后打開當前用戶目錄看看是否有剛剛生成的key文件,實際上應該是2個文件才對key是私鑰,key.pub是公鑰
我的當前用戶目錄是“C:\Users\Administrator”,可能會和大家不一樣
五、Linux服務器SSH設置
生成密鑰對后還需要把公鑰即我們剛才生成的key.pub文件上傳到linux服務器上
注意:上傳位置是我們登錄Linux所用用戶的家目錄下的.ssh目錄下
如果目錄不存在,需要創建~/.ssh目錄,并把目錄權限設置為700),
把公鑰改名為authorized_keys,并且把它的用戶權限設成600
如:/root/.ssh/
然后把我們上傳的key.pub文件改名為:authorized_keys
[root@server ~]# mv key.pub authorized_keys
[root@server ~]# chmod 700 .ssh
[root@server ~]# chmod 600 authorized_keys
好了,這樣就可以使用SSH密鑰連接Linux服務器了
如果你沒有連接成功請請檢查一下.ssh目錄與authorized_keys文件的權限是否正確
更多關于SSH連接Linux服務器的文章請查看下面的相關文章