總的來講SSH方式驗證有兩種:shell
1 用戶名密碼方式,很常見。問題在於(根據網上資料)你可能登陸的不是你想登陸的服務器,可能存在中間機器進行欺騙(我本身理解,例如使用域名登陸而域名被篡改,就可能登陸到另外的機器上。還有一種狀況就是堡壘機)。安全
2 密鑰登陸。服務器
「若是你要鏈接到ssh服務器,ssh客戶端會向ssh服務器發出請求,請求用你的密鑰進行安全驗證。ssh服務器在收到該請求以後,會先在ssh服務器上,檢查你登錄的用戶的主目錄下尋找對應的公鑰,而後把它和你發送過來的公鑰進行比較。若是兩個公鑰一致,ssh服務器就用公鑰加密「質詢」(challenge)並把它發送給ssh客戶端。ssh客戶端在收到「質詢」以後就能夠用你的私鑰解密該「質詢」,再把它發送給ssh服務器。」dom
下面介紹SSH密鑰登陸設置方法:ssh
兩臺服務器A和B,要實現B用無密碼方式登陸A。ide
1 在B機器上生成密鑰:工具
[wcadmin@BLPCGT002 ~]$ uname -a Linux BLPCGT002.lenovo.com 2.6.32-573.el6.x86_64 #1 SMP Wed Jul 1 18:23:37 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux [wcadmin@BLPCGT002 ~]$ pwd /home/wcadmin [wcadmin@BLPCGT002 ~]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/wcadmin/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/wcadmin/.ssh/id_rsa. Your public key has been saved in /home/wcadmin/.ssh/id_rsa.pub. The key fingerprint is: 04:d0:72:aa:1e:08:ab:40:59:61:4c:c7:dd:be:3c:d9 wcadmin@BLPCGT002.lenovo.com The key's randomart image is: +--[ RSA 2048]----+ | o+++o . | | .oo.oo . | | o + o | |.o . . . | |oo . S + | |+ o = E | |o. . . | |. . | | | +-----------------+ [wcadmin@BLPCGT002 ~]$ ll .ssh total 12 -rw------- 1 wcadmin wcgrp 1675 Dec 21 09:56 id_rsa -rw-r--r-- 1 wcadmin wcgrp 410 Dec 21 09:56 id_rsa.pub -rw-r--r-- 1 wcadmin users 2365 Dec 20 17:54 known_hosts [wcadmin@BLPCGT002 ~]$
2 在A機器上配置。加密
將B機器上~/.ssh/id_rsa.pub文件上傳到A中,並將其內容放入在A中~/.ssh/中。以下:.net
wcadmin@BJLTPGPLM1001T.lenovo.com-/home/wcadmin/.ssh->scp wcadmin@10.99.200.46:/home/wcadmin/.ssh/id_rsa.pub id_rsa_10.99.200.46.pub The authenticity of host '10.99.200.46 (10.99.200.46)' can't be established. RSA key fingerprint is 78:73:74:20:e9:78:5b:27:68:be:c1:f4:71:a6:44:b6. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '10.99.200.46' (RSA) to the list of known hosts. wcadmin@10.99.200.46's password: id_rsa.pub 100% 410 0.4KB/s 00:00 wcadmin@BJLTPGPLM1001T.lenovo.com-/home/wcadmin/.ssh->ll total 8 -rw-r--r-- 1 wcadmin wcgrp 410 Dec 21 10:00 id_rsa_10.99.200.46.pub -rw-r--r-- 1 wcadmin wcgrp 1968 Dec 21 10:00 known_hosts wcadmin@BJLTPGPLM1001T.lenovo.com-/home/wcadmin/.ssh->cat id_rsa_10.99.200.46.pub > authorized_keys wcadmin@BJLTPGPLM1001T.lenovo.com-/home/wcadmin/.ssh->ll total 12 -rw-r--r-- 1 wcadmin wcgrp 410 Dec 21 10:00 authorized_keys -rw-r--r-- 1 wcadmin wcgrp 410 Dec 21 10:00 id_rsa_10.99.200.46.pub -rw-r--r-- 1 wcadmin wcgrp 1968 Dec 21 10:00 known_hosts wcadmin@BJLTPGPLM1001T.lenovo.com-/home/wcadmin/.ssh->rm id_rsa_10.99.200.46.pub
上面是最簡單的方法。code
下面進行一些說明。
1 B中密鑰文件id_rsa必須保證訪問權限爲600,不然登陸仍是會提示輸入密碼。
[wcadmin@BLPCGT002 .ssh]$ pwd /home/wcadmin/.ssh [wcadmin@BLPCGT002 .ssh]$ ll total 12 -rw------- 1 wcadmin wcgrp 1675 Dec 21 09:56 id_rsa -rw-r--r-- 1 wcadmin wcgrp 410 Dec 21 09:56 id_rsa.pub -rw-r--r-- 1 wcadmin users 2365 Dec 20 17:54 known_hosts [wcadmin@BLPCGT002 .ssh]$
2 ssh-keygen默認加密方式爲rsa,能夠經過文件名或者查看文件內容得知。
[wcadmin@BLPCGT002 .ssh]$ more id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAw75ZqWFoMU66VUYB7IJmGKT2x5iVyujcK1B99LyBXNgQ1BFdElw6zEG8Gb+95T3Q35P8QVVG6yGe9vpIJ6fFuvePgK6Ssd4GfG41Jpwc3Yiics0mR7ENijyaE 1gIwIxwxfn/BNjymXS8lA8yhRdYpg68H+jh2E/qGlJ/wrYFSfunrWp5LtJHrnNDHbfjGKZn2ZhMZsrTkj2WdZjhB9QlxC64SJpCTcAFXW0MutvZkm7XXg0IBCoYLkbLYkMGlO7moU4BwfBNVAFv4mJaMurzNA kr2JuVcPXHqfGklGEzQm+L/AZpo3QZEuuyoC/nI+VmMnFZdswZ4gbIhgroiYfmxw== wcadmin@BLPCGT002.lenovo.com [wcadmin@BLPCGT002 .ssh]$
如上,ssh-rsa開頭。
另外ssh-keygen能夠指定加密方式,例如ssh-keygen -t dsa。
還有其餘參數好比密鑰長度,能夠參考幫助。
3 ssh-keygen生成密鑰時,能夠設置私鑰加密,可是通常咱們都不設置。
4 在window下也能夠設置,例如使用xshell等工具設置。