Xshell通過SSH密鑰、SSH代理連接Linux服務器詳解

使用SSH客戶端來登陸Linux系統,我相信大家肯定都用過,只是選擇的SSH客戶端的軟件不同而已,在Windows系統下,用的比較多就應該就是PUTTY,SecureCRT,Xshell這三個吧。大家是不是曾經在進行服務器管理的時候,會遇到一些交互的處理問題,比如說自動化的命令需要密碼的時候,我們就不能自動完成。所以我們會用到關於SSH密鑰的一些問題,那麼我今天就以Xshell爲例,來給大家講解一下如何用SSH登陸,而無需輸入密碼。當然,也可以通過Linux系統上的SSH來實現此功能,只是實現的方法略有不同。後面我也做個簡單的教程出來供大家分享。

Xshell增加一個對話

在開始正式內容之前,我們先來看看Xshell的一個基本設置:新增一個會話(new session)



OK,現在我們進入我們今天的內容。這裏做一個說明:系統爲RHEL6,我們把他當作Linux服務器,本文由普通的用戶名+密碼認證、密鑰認證、密鑰+輸入密鑰密碼認證、代理認證ssh-agent(密鑰+密鑰密碼+無需密碼輸入)這四個內容來給大家講解,希望能給大家一個拋磚引玉的作用。

1、普通的用戶名+密碼認證

這個不用多說,默認情況下,都是用用戶名和密碼來認證登陸的,自行增加一個會話,每次連接的時候,打開會話就OK了,具體的設置,可能參考上面的關於Xshell的基本設置。所以我們就略過,不過,如果說,你連這個都搞不定的話,那麼,下面的內容也就無法時行下去了。哈哈……

2、密鑰認證

所謂的密鑰認證,就是在本地配置一個私鑰和一個公鑰,然後把公鑰傳要你想連接的服務器,就能實現無需輸入用戶名和密碼的目的。這個就如同是製造了一個鑰匙(私鑰)和一把鎖(公鑰)一樣,而這把鎖可以複製到多臺服務器,這樣我只要用我的這個鑰匙,就可以打開多個服務器的鎖了。所以說,要啓用密鑰認證,關鍵就是製造鑰匙和鎖。下面就來看看,在Xshell上如何來製造。
選中我們新創建的會話,對其屬性進行更改


配置認證的方式,並創建密鑰

選擇KEY相應的類型與長度


Xshell自動創建密鑰文件

設置密鑰文件名,我們這裏先不爲密鑰設置密碼

保存公鑰文件

選擇剛剛創建的私鑰

設置登陸的用戶

這樣,我們就有了一個公鑰和私鑰了,接下來,就是把生成的公鑰上傳到服務器了。
我們直接用Xshell自帶的一個sftp功能來上傳我們生成的文件(我把公鑰文件保存在我的WIN7系統桌面上)
打開Xshell後,應該出現下面的提示符
Xshell:\>
我們需要設置一下本地的工作目錄,方便我們上傳文件(如下圖)

我們用sftp來連接遠程的服務器,然後上傳我們的公鑰文件
Xshell:\> sftp [email protected]
這時候不要選擇私鑰登陸啊,因爲我們還沒有進行配置,所以必需使用密碼登陸(如圖)

Connecting to 192.168.6.10:22…
Connection established.
Escape character is ‘^@]’.
Your current local directory is
C:\Users\Administrator\Desktop
Type `help’ to browse available commnands.
sftp:/root>
出面上面的提示,就表示我們登陸上服務器了,關於SFTP的命令命令,大家可以用help來查看幫助。下面我們就向服務器傳文件了
我們在服務器的root目錄下保存我們的公鑰,當然,你可以放到其他的位置,只是這個文件的位置,我們需要記住,因爲後面的SSHD設置需要他。
sftp:/root> put id_rsa_2048.pub
Uploading id_rsa_2048.pub to remote:/root/id_rsa_2048.pub
sftp:/root/.ssh> exit

OK,我們上傳上去了,下面我們就用SSH的普通方法(用戶名和密碼)登陸服務器,然後修改我們的sshd_config配置文件,啓用密鑰認證,關閉用戶名、密碼認證。
Xshell:\> ssh [email protected]
還是先用用戶名密碼來登陸
[root@yufei ~]# vim /etc/ssh/sshd_config
啓用下面兩個內容,並設置好相應的公鑰文件位置
PubkeyAuthentication yes
AuthorizedKeysFile /root/id_rsa_2048.pub
關於密碼認證,我們暫時先不關閉,以防萬一啊!!
也就是PasswordAuthentication yes這個先不禁止。
保存退出後,重新啓動SSHD服務
[root@yufei ~]# service sshd restart
注意:如果你的系統是RHEL6,並且沒有關掉SELinux的話,在登陸的時候,你會發現始終需要你輸入密碼,而我們並沒有設置密碼啊,這是爲什麼呢?剛開始的時候我也很奇怪,我在RHEL5上測試是正常的,可一到RHEL6上就是不行,折騰了半天,發現是SELinux惹的禍啊!沒有關係,我們關閉掉他就OK了。
[root@yufei ~]# setenforce 0
[root@yufei ~]# exit
這時候,你就可以重新換用密鑰方式登陸了,已經無需輸入任何密碼。

3、密鑰+輸入密鑰密碼認證

和上面是一樣的,只是在創建證書的時候,輸入密碼就可以了,注意,一定要把原來客戶端的證書文件換成現在的,如果還是用以前的話,會導致你遠程的SSH登陸不上系統了。

設置了密鑰的密碼後,在使用密鑰登陸的時候,就需要輸入相應的密鑰密碼,輸入後,就能正常登陸了。但這雖然增加了安全性,但他的交互性又沒有了,想要既使用密鑰+密鑰密碼方式來登陸,又不輸入密碼,就需要用ssh-agent來實現。

4、代理認證ssh-agent(密鑰+密鑰密碼+無需密碼輸入)

在上面認證的基礎上,我們在服務器上再次配置sshd_config文件
開啓
AllowAgentForwarding yes
重新啓動
然後在Xshell中開啓Agent方式


只要上面的沒有問題,那麼我們就可以用Xshell再次登陸測試了,這次登陸,只需要輸入一次密鑰密碼,以後都無需再輸入密碼了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章