前面介紹了linux的ssh遠程登陸協議和ssh無password登陸方式。這裏在windows下經過secureCRT和putty登陸linux來看一下詳細的密鑰建立,配置和登陸。也算作個備忘錄吧。linux
1.linux下建立密鑰對算法
還記得前面說的怎麼建立密鑰對吧:windows
[sshtest@localhost ~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/sshtest/.ssh/id_rsa): Created directory '/home/sshtest/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/sshtest/.ssh/id_rsa. Your public key has been saved in /home/sshtest/.ssh/id_rsa.pub. The key fingerprint is: 22:e4:e8:60:24:b5:ac:bd:53:52:4a:b1:08:a0:e9:7b sshtest@localhost.localdomain The key's randomart image is: +--[ RSA 2048]----+ |+ o | |o= + | |=.= o | |++ * | |oo= + . S | |.o.+ . . | | .+E | | .. | | | +-----------------+
假設想登陸的時候不用輸建立密鑰的password,那麼上面就直接回車,不用輸。運行完這個過程後,咱們的密鑰對就成功建立了,在.ssh這個隱藏文件夾中。dom
查看發現有兩個文件,一個私鑰id_rsa,一個公鑰id_rsa.pub,而後咱們將公鑰的內容輸出到一個叫authorized_keys的文件裏:ssh
[sshtest@localhost ~]$ cd .ssh/ [sshtest@localhost .ssh]$ ls id_rsa id_rsa.pub [sshtest@localhost .ssh]$ cat id_rsa.pub >> authorized_keys [sshtest@localhost .ssh]$ ls authorized_keys id_rsa id_rsa.pub
爲何要輸出到authorized_keys的文件裏呢,前面也說過了。因爲在/etc/ssh/sshd_config文件裏配置的。默以爲authorized_keys文件,假設有很是多的公鑰。就都輸出到這個文件裏。ide
而後咱們將私鑰id_rsa拷出來放在咱們的windows的某個文件夾中,密鑰登陸的時候需要這個玩意,最後從新啓動sshd服務。/etc/init.d/sshd restart成功後,咱們就可以在windows上經過secureCRT或者putty等軟件來登陸到linux的某個用戶了。這個用戶就是authorized_keys這個文件所在的用戶。spa
1).secureCRT登陸.net
執行secureCRT軟件。輸入要登陸到的主機的IP地址,port端口,假設沒特別設置默以爲22以及要登陸到用戶的username,而後在authentication選項中僅僅勾選PublicKey或者將PublicKey選項提到首選。再選中它點擊Properties:rest
在彈出的對話框中點擊這個button選中你拷出來的私鑰點擊OK。而後點擊當前窗口的connectbutton:code
最後會提示要輸入建立密鑰時的password。假設設置過:
這樣咱們就可以登陸到linux中指定的用戶了:
這個過程當中必定要記得將.ssh文件夾權限設置爲700,將authorized_keys文件的權限設置爲600,否則是會報錯的:
2).putty登陸
用putty就略微麻煩了一點,需要下載一個叫puttygen的東東來轉換私鑰的格式,前面操做都是同樣的。建立密鑰對。而後改動權限,將私鑰拷到windows的某個文件夾。
putty私鑰的格式不一樣。因此需要puttygen來轉換。
執行puttygen軟件,點擊Load選擇拷出來的私鑰:
假設找不到你的私鑰文件,就點擊右下角的文件類型,選擇顯示所有文件。因爲私鑰文件在linux下生成的,沒有擴展名:
選擇私鑰以後會提示輸入建立密鑰時設置的password,假設設置過:
轉換成功。接下來就需要保存咱們轉換格式後生成的私鑰文件,點擊Save private keybutton保存:
putty的私鑰擴展名是.ppk,這時你發現私鑰文件已經保存成功。接下來就是使用putty密鑰登陸:
執行putty軟件,左邊選擇Connection->SSH->Auth點擊Browsebutton選擇上面轉換格式後生成的私鑰文件.ppk:
而後在左邊選擇Session輸入要登陸主機linux的IP和port,點open:
最後輸入要登陸的用戶的username和建立私鑰時設置的password,假設設置過:
2.windows下secureCRT和putty建立密鑰對
前面說的是在linux中建立的密鑰對,現在選擇用secureCRT和putty建立密鑰對,而後將公鑰上傳至主機後再經過密鑰登陸。若是咱們已經將公鑰上傳到了主機爲key.pub。不能像上面直接輸出到authorized_keys,必須要轉換成openssh能識別的格式,這裏就要ssh-keygen -i -f key.pub >> authorized_keys,authorized_keys文件必須是600的權限,而且要存在於.ssh隱藏文件裏,若是沒有就建立,權限爲700。最後從新啓動sshd服務/etc/init.d/sshd restart。如下看看兩種建立密鑰對的方式和密鑰登陸的方式。
1).secureCRT建立和登陸
執行secureCRT軟件。和上面同樣選擇PublicKey。而後點Properties。在彈出的對話框中選擇Create Identity File來建立密鑰對:
而後下一步->選擇算法DSA或者RSA再下一步->設置密鑰password再下一步->設置密鑰長度默認1024下一步->下一步->選擇密鑰對保存的位置。默以爲個人文檔中再完畢->是否上傳。選擇否。這樣密鑰對就生成了,私鑰爲Identity。公鑰爲Identity.pub:
將公鑰拷到linux主機上在咱們要登陸的用戶文件夾中運行上面的紅色部分的操做,而後經過PublicKey指定咱們生成的Identity私鑰文件登陸。向上面同樣。
2).putty建立和登陸
putty建立密鑰對仍是要靠puttygen這個軟件,執行puttygen軟件,點擊Generatebutton,本身主動建立密鑰對。也可以設置密鑰的長度,默以爲2048。1024要比2048的建立速度快些。
建立完畢後。可以看到公鑰的內容。而後設置密鑰password。分別保存公鑰和私鑰。而後將公鑰上傳到主機上執行上面紅色部分操做,也可以僅僅保存私鑰而後將公鑰內容拷貝到linux主機的authorized_keys文件裏:
最後再執行putty。指定私鑰登陸。