1. 程式人生 > >SSH+RSA實現遠程免密登陸

SSH+RSA實現遠程免密登陸

SSH 密鑰對驗證

知識部分
簡述:
SSH是一種安全通道協議,主要用來實現字符界面的遠程登陸、遠程復制等功能。SSH協議對通信雙方的數據傳輸進行了加密處理,其中包括用戶登陸是輸入的用戶口令。SSH和TELNET、RSH等提供了更好的安全性。OpenSSH是實現SSH遠程登陸的開源軟件項目,適用於Linux、UNIX系統,其官網地址為http://www.openssh.com。
RSA加密算法是一種非對稱加密算法。對極大整數做因數分解的難度決定了RSA算法的可靠性。換言之,對一極大整數做因數分解愈困難,RSA算法愈可靠。假如有人找到一種快速因數分解的算法的話,那麽用RSA加密的信息的可靠性就肯定會極度下降。但找到這樣的算法的可能性是非常小的。今天只有短的RSA鑰匙才可能被強力方式解破。到目前為止,世界上還沒有任何可靠的攻擊RSA算法的方式。只要其鑰匙的長度足夠長,用RSA加密的信息實際上是不能被解破的。
操作部分
技術分享圖片
一、修改配置文件
1、OpenSSH在Linux中默認已經安裝,所以我們第一步就可以直接在需要開啟SSH的linux系統上修改它的配置文件/etc/ssh/sshd_config。首先配置監聽地址為192.168.1.1,端口默認22。
技術分享圖片
2、找到下面幾行,將#去除,使其生效。該三行配置是支持基於RSA生成的密鑰對認證方式。
技術分享圖片
3、在配置文件中添加該配置可以配置授權用戶。下圖所示,允許root從所有網段登陸;允許zhangsan在192.168.1.2上登陸。(這裏允許root登陸是為了一會使用scp上傳公鑰。)
技術分享圖片
4、重啟服務
技術分享圖片
5、建立用戶張三、配置地址為192.168.1.1
技術分享圖片
二、構建RSA密鑰對驗證體系
1、在客戶端上建立用戶lisi作為zhangsan的映射用戶,並用lisi登陸linux客戶機。
技術分享圖片
2、用lisi登陸後創建密鑰對。
技術分享圖片
3、密鑰對生成後會放在以下路徑,確認一下是否生成。其中id_rsa為私鑰,id_rsa.pub為公鑰。
技術分享圖片
4、上傳公鑰到SSH服務端。這裏可以使用SSH提供的一個scp命令程序上傳該公鑰。註意:我們上傳公鑰通過root用戶和密碼驗證來使用scp命令程序。
技術分享圖片
5、在服務端將公鑰導入到zhangsan的公鑰庫。首先在zhangsan的根目錄/home/zhangsan/下建立.ssh/目錄;然後將上傳到/tmp下的公鑰倒過來。
技術分享圖片
6、配置地址為192.168.1.2
三、驗證。返回到linux客戶端中,在lisi中遠程登陸SSH服務端。
技術分享圖片
可以看到,我們登錄時並沒有輸入密碼的環節。這種方法即使遠程登陸的過程中被抓包,也無法破解密碼。既保證了安全性,也有了一定的便捷性。
四、使用windows客戶端實現上面的免密登陸。
1、首先為windows客戶端配置地址為192.168.1.3
技術分享圖片
2、我們需要在windows上安全xshell終端模擬軟件,以遠程連接SSH服務端。
技術分享圖片
3、打開xshell,點擊“工具”-“新建用戶密鑰生成向導”
技術分享圖片
4、選擇生成RSA密鑰,長度2048(自己決定,越長越安全)。
技術分享圖片
5、生成完成,點擊下一步。
技術分享圖片
6、輸入密鑰名稱及加密密碼
技術分享圖片
7、雙擊該密鑰對,然後將公鑰保存起來
技術分享圖片
技術分享圖片
8、把公鑰上傳到SSH服務端的/root/.ssh下。我們通過安裝winscp這個軟件上傳。
技術分享圖片
9、打開winscp,在該界面輸入hostname也就是SSH服務端地址;輸入用戶名“root”及密碼。註意:上傳公鑰這裏仍然使用root用戶
技術分享圖片
10、將剛剛保存到桌面的公鑰文件傳到SSH服務端中的/root下。直接拖動公鑰文件到右邊的SSH服務端即可。
技術分享圖片
11、進入到SSH服務端,找到/root下的id_rsa_2048.pub公鑰文件。並將其導入到root的公鑰文件中。
技術分享圖片
12、驗證。打開windows客戶端的xshell,新建會話
技術分享圖片
13、點擊連接。
技術分享圖片
14、接受並保存
技術分享圖片
15、輸入登陸用戶root
技術分享圖片
16、這裏選擇第二個Public Key,輸入密鑰對的加密密碼
技術分享圖片
17、成功連接
技術分享圖片
補充:搭配TCP Wrappers做SSH的訪問控制。
TCP Wrappers可以將其他的TCP服務程序“包裹”起來,增加一個安全監測過程,外來的連接請求需要經過TCP Wrappers的檢測,獲得許可才可以訪問到真正的服務程序。通常TCP Wrappers默認安裝,我們直接配置即可。他的兩個策略文件為/etc/hosts.allow、/etc/hosts.deny,分別用來設置允許、拒絕策略。
如圖,編輯/etc/hosts.allow,格式為<服務程序>:<客戶機地址>。(例如192.168.2.0網段用192.168.2.*表示;ALL表示所有網段。如果寫多個網段、多個服務可以用“,”分隔。)圖中表示允許192.168.1.2和192.168.2.0/24網段使用SSH遠程。
技術分享圖片

SSH+RSA實現遠程免密登陸