ssh提供兩種級別的安全驗證。
第一種級別(基於密碼的安全驗證),知道帳號和密碼,就可以登入到遠端主機,並且所有傳輸的資料都會被加密。但是,可能會有別的伺服器在冒充真正的伺服器,無法避免被「中間人」攻擊。
第二種級別(基於金鑰的安全驗證),需要依靠金鑰,也就是你必須為自己建立一對金鑰,並把公有金鑰放在需要訪問的伺服器上。客戶端軟體會向伺服器發出請求,請求用你的金鑰進行安全驗證。伺服器收到請求之後,先在你在該伺服器的使用者根目錄下尋找你的公有金鑰,然後把它和你傳送過來的公有金鑰進行比較。如果兩個金鑰一致,伺服器就用公有金鑰加密「質詢」(challenge)並把它傳送給客戶端軟體。從而避免被「中間人」攻擊。
基礎環境:
機器a:192.168.1.107
機器b:192.168.1.108
ssh埠:32323
a機器使用者:daiyu
b機器使用者:daiyu
目標:
從a機器使用公鑰金鑰方式登陸b機器
(1)在a機器建立公鑰金鑰對,留意金鑰對的存放路徑
(2) 在b機器被登陸使用者根目錄下建立目錄.ssh,並設定正確的許可權
mkdir -p ~/.ssh
chmod 700 ~/.ssh
(3)將a機器的公鑰拷貝至b機器被登陸使用者的.ssh目錄中
scp -p32323 ~/.ssh/id_rsa.pub [email protected]:~/.ssh/
(4)調整b機器中的公鑰,並設定正確的許可權
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/.ssh/id_rsa.pub
ls -l ~/.ssh/
(5)修改a機器的ssh配置
sudo vim /etc/ssh/sshd_config
permitrootlogin no
rsaauthentication yes
pubkeyauthentication yes
(6)重啟a機器的ssh服務sudo service sshd restart(7)測試從a機器登陸b機器ssh -p32323 192.168.1.108
[daiyu@localhost ~]$ ssh -p32323 192.168.1.108
last login: mon apr 17 11:46:01 2017 from 192.168.1.107
[daiyu@localhost ~]$
注:如果b機器的.ssh目錄和公鑰的許可權設定不正確,會輸出日誌"bad ownership or modes for directory…"
原文出自:
end;
SSH 公鑰免密碼登陸
ssh 金鑰對總是成雙出現的,一把公鑰,一把私鑰。公鑰可以自由的放在您所需要連線的 ssh 伺服器上,而私鑰必須穩妥的保管好。所謂 公鑰登入 原理很簡單,就是使用者將自己的公鑰儲存在遠端主機上。登入的時候,遠端主機會向使用者傳送一段隨機字串,使用者用自己的私鑰加密後,再發回來。遠端主機用事先儲存的公...
ssh 連線 通過公鑰體制,無密碼登陸
每個使用者 目錄下有.ssh 目錄 沒有的話可以自己建,通過公鑰體制可以做到很多個使用者可以登陸linux 系統上的同乙個使用者,而他們都不知道出這個使用者的密碼,並且互相不知道各自的私鑰,他們持有不同的私鑰,而其各自相對應的公鑰都是這個使用者可以信任的 假設 我的系統上有乙個使用者名為git 另外...
ssh無密碼登陸
1.使用root登陸 修改 etc ssh sshd config檔案 客戶端服務端都需要改 將 authorizedkeysfile ssh authorized keys 前面的 去掉 如果需要root也能無密碼登陸,把 permitrootlogin yes 前面的 去掉 執行下面的命令重啟s...