一、SSH概念(百度)
SSH 為 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;SSH 為建立在應用層基礎上的安全協議。SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。SSH最初是UNIX系統上的一個程序,后來又迅速擴展到其他操作平台。SSH在正確使用時可彌補網絡中的漏洞。SSH客戶端適用於多種平台。幾乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可運行SSH。
SSH驗證:從客戶端來看,SSH提供兩種級別的安全驗證。
第一種級別(基於口令的安全驗證)
只要你知道自己帳號和口令,就可以登錄到遠程主機。所有傳輸的數據都會被加密,但是不能保證你正在連接的服務器就是你想連接的
服務器。可能會有別的服務器在冒充真正的服務器,也就是受到“中間人”這種方式的攻擊。
第二種級別(基於密匙的安全驗證)
需要依靠
密匙,也就是你必須為自己創建一對密匙,並把公用密匙放在需要訪問的服務器上。如果你要連接到SSH服務器上,客戶端軟件就會向服務器發出請求,請求用你的密匙進行安全驗證。服務器收到請求之后,先在該服務器上你的主目錄下尋找你的公用密匙,然后把它和你發送過來的公用密匙進行比較。如果兩個密匙一致,服務器就用公用密匙加密“質詢”(challenge)並把它發送給客戶端軟件。客戶端軟件收到“質詢”之后就可以用你的私人密匙解密再把它發送給服務器。
用這種方式,你必須知道自己密匙的
口令。但是,與第一種級別相比,第二種級別不需要在網絡上傳送口令。
二、SSH密鑰驗證的機制

三、SSH無密碼(密鑰驗證)登錄的配置
配置主機A免密登錄到主機B(方法一)
1.在主機A生產密鑰對: ssh-keygen -t rsa, 會在.ssh目錄下產生密鑰文件
2.拷貝主機A的公鑰到主機B: scp id_rsa.pub
3.將主機A的公鑰加到主機B的授權列表.ssh/authorized_keys(若不存在,手動創建): cat id_rsa.pub >> authorized_keys
4.授權列表authorized_keys的權限最好設置成600,chmod 600 authorized_keys
(方法二)
#進入到我的home目錄 cd ~/.ssh
ssh-keygen -t rsa (四個回車)
執行完這個命令后,會生成兩個文件id_rsa(私鑰)、id_rsa.pub(公鑰)
將公鑰拷貝到要免登陸的機器上: ssh-copy-id localhost

ssh-keygen 產生公鑰與私鑰對. ssh-copy-id 將本機的公鑰復制到遠程機器的authorized_keys文件中,ssh-copy-id也能讓你有到遠程機器的home, ~./ssh , 和 ~/.ssh/authorized_keys的權利 第一步:在本地機器上使用ssh-keygen產生公鑰私鑰對 zhz@zhz:~/$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/zhz/.ssh/id_rsa): Enter passphrase (empty for no passphrase): [Press enter key same passphrase again: [Pess enter key] Your identification has been saved in /home/zhz/.ssh/id_rsa. Your public key has been saved in /home/zhz/.ssh/id_rsa.pub. The key fingerprint is: 用cat命令查看是否生成產生公鑰私鑰對 zhz@zhz:~$ cat .ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCl9N5+xboqSIagBx02rdZ2fkROCPW8iW7hl6Gu+2hkBYYy/b1qcOm8RF/AMyas3i0QEK7Hcu9H51l2lulVbS5n9M9FaWIyYzssaS012x2mg9iA6MxPMlaXFsZ5jnVrGicndzf3VUu9kCErp5q0OzzMjsG3PKQevzWZJSBaFgc8NF5ZJ+VT54BN8ktMTHVwOo15I2Uai+bs4eP0NsuwIJmGyYIUOuvTuUtJxGV3hZ+tcjhupupqVCwYOE+cDz8VkFBGtnKsdE69hWoY2VUfEOAfHZptra7Ce9dXfDgx9jxuuNiJYtGo/bZDfe+UJ5HUv8wrL+hFeRIihdmP2CKJD8j5 zhz@zhz 第二步:用ssh-copy-id將公鑰復制到遠程機器中 zhz@zhz:~$ ssh-copy-id -i .ssh/id_rsa.pub 用戶名字@192.168.x.xxx 注意: ssh-copy-id 將key寫到遠程機器的 ~/ .ssh/authorized_key.文件中 第三步: 登錄到遠程機器不用輸入密碼 zhz@zhz:~$ ssh 用戶名字@192.168.x.xxx Last login: Sun Nov 16 17:22:33 2008 from 192.168.1.2 常見問題: ssh-copy-id -u eucalyptus -i ~eucalyptus/.ssh/id_rsa.pub ssh 用戶名字@192.168.x.xxx 第一次需要密碼登錄 上述是給eucalyptus用戶賦予無密碼登陸的權利 /usr/bin/ssh-copy-id: ERROR: No identities found 使用選項 -i ,當沒有值傳遞的時候或者 如果 ~/.ssh/identity.pub 文件不可訪問(不存在), ssh-copy-id 將顯示上述的錯誤信息 ( -i選項會優先使用將ssh-add -L的內容)