基於vagrant工具在win7下免密登錄linux


一、SSH加密方式

  SSH采用的是”非對稱密鑰系統”,即耳熟能詳的公鑰私鑰加密系統,其安全驗證又分為兩種級別。

1. 基於口令的安全驗證

  這種方式使用用戶名密碼進行聯機登錄,一般情況下我們使用的都是這種方式。整個過程大致如下:

  (1)客戶端發起連接請求。

  (2)遠程主機收到用戶的登錄請求,把自己的公鑰發給客戶端。

  (3)客戶端接收遠程主機的公鑰,然后使用遠程主機的公鑰加密登錄密碼,緊接着將加密后的登錄密碼連同自己的公鑰一並發送給遠程主機。

  (4)遠程主機接收客戶端的公鑰及加密后的登錄密碼,用自己的私鑰解密收到的登錄密碼,如果密碼正確則允許登錄,到此為止雙方彼此擁有了對方的公鑰,開始雙向加密解密。

  PS:當網絡中有另一台冒牌服務器冒充遠程主機時,客戶端的連接請求被服務器B攔截,服務器B將自己的公鑰發送給客戶端,客戶端就會將密碼加密后發送給冒牌服務器,冒牌服務器就可以拿自己的私鑰獲取到密碼,然后為所欲為。因此當第一次鏈接遠程主機時,在上述步驟的第(3)步中,會提示您當前遠程主機的”公鑰指紋”,以確認遠程主機是否是正版的遠程主機,如果選擇繼續后就可以輸入密碼進行登錄了,當遠程的主機接受以后,該台服務器的公鑰就會保存到 ~/.ssh/known_hosts文件中。

2. 基於密匙的安全驗證

  這種方式你需要在當前用戶家目錄下為自己創建一對密匙,並把公匙放在需要登錄的服務器上。當你要連接到服務器上時,客戶端就會向服務器請求使用密匙進行安全驗證。服務器收到請求之后,會在該服務器上你所請求登錄的用戶的家目錄下尋找你的公匙,然后與你發送過來的公匙進行比較。如果兩個密匙一致,服務器就用該公匙加密“質詢”並把它發送給客戶端。客戶端收到“質詢”之后用自己的私匙解密再把它發送給服務器。與第一種級別相比,第二種級別不需要在網絡上傳送口令。

  PS:簡單來說,就是將客戶端的公鑰放到服務器上,那么客戶端就可以免密碼登錄服務器了,那么客戶端的公鑰應該放到服務器上哪個地方呢?默認為你要登錄的用戶的家目錄下的 .ssh 目錄下的 authorized_keys 文件中(即:~/.ssh/authorized_keys)

二、配置免密登錄

1、背景介紹

  目標:A免密登錄B

  系統:A為win7,B為centos7.0(vitualbox)

  工具:vagrant,ssh(git自帶,需要配置環境變量)

  背景簡介:我在windows7上面使用vagrant將網上的box生成了虛擬機,當然中間使用了virtualbox作為中間工具,但是每次使用vagrant打開虛擬機都需要使用密碼,很麻煩,所以想配置免密登錄,但是配置完成之后還是不行。

2、使用第二種驗證方式配置

2.1 在windows上面生成密鑰和公鑰

  在任何地方使用ssh-keygen -t -rsa

  該命令表示的是使用rsa算法生成公鑰和私鑰,當然算法還有dsa算法也可以用。

  此步驟在提示Enter file in which to save the key(xxxx)的時候,需要提供路徑和文件,不然會生成不成功,此后會提示輸入密碼,可以直接回車跳過

  同時,建議將文件生成在用戶目錄下的.ssh文件夾下面

  生成完成之后在輸入的文件路徑下查看

2.2 將私鑰添加到SSH agent中

   因為默認只讀取id_rsa,為了讓SSH識別新的私鑰,需將其添加到SSH agent中ssh-add ~/.ssh/id_rsa

  如果出現Could not open a connection to your authentication agent的錯誤,試着用一下的命令:

  ssh-agent bash

  ssh-add ~/.ssh/id_rsa

2.3 拷貝公鑰到linux

  1)登錄linux,查看當前用戶,我的用戶為root,所以直接進入root目錄,當然也可以直接使用cd ~來進入當前用戶目錄,如果客戶機多用戶,建議查看下當前登錄的用戶。

  2)確定linux下面是否有ssh,如果沒有則執行yum/apt-get install ssh

  3)在用戶目錄下創建.ssh目錄

  4)拷貝win7生成的公鑰到linux下剛才創建的.ssh里面,並且重命名為authorized_keys

  5)修改.ssh權限

  chmod 700 -R .ssh修改目錄權限,這點很重要, 必須修改, 否則會配置不成功。

三、問題解決

1、vagrant登錄用戶配置

  本以為大功告成,可以免密登錄了,但是不對,我啟動vagrant的時候,出現了SSH auth method: password

  這不還是要密碼么。。。檢查配置,原來我在使用linux的時候,使用了root登錄,並進行了配置,所以導致需要密碼

  所以注釋掉其中兩行,依然可以root登錄。

2、私鑰的使用

  當我重啟虛擬機,看到default: SSH auth method: private key時,一頓雞凍,以為終於搞定了,但是接下來就尷尬了。。。

  媽蛋,這什么情況,不是就卡死了么。。。

  仔細看告警,是權限授權失敗,跟我們主機相關的權限就只有公鑰和私鑰。這種長時間無法通過vagrant ssh登陸的問題可能會由於ssh認證機制導致失敗。vagrant默認采用key登錄,但所用的KeyPair可能沒有正常配置。

  使用vagrant ssh-config查看

  看起來好像沒什么不對,因為私鑰是有的,但是一想,私鑰我沒配置過,這個是在我建立box的時候有的,那時候還沒在本機生成過公鑰和私鑰呢,所以果斷把剛才在本機生成的私鑰拷貝過來,並且改名為private_key,覆蓋掉  f:/DownLoad/Vagrant/Box/centos7.0/.vagrant/machines/default/virtualbox/private_key

3、驗證

  上面的步驟完成之后,使用vagrant up啟動虛擬機,然后使用vagrant ssh能順利登錄虛擬機則表示成功

  注:如果環境不是使用的vagrant登錄虛擬機,則只需看一二節即可,如果是其他ssh工具則需要看情況配置ssh服務或者私鑰。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM