前言
SSH為Secure Shell 的縮寫,是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。越來越多的小伙伴們使用遠程登錄,而ssh安全性無疑是很高的,那么我們現在來看看如何實現ssh無密碼驗證配置。
一. 準備工作
首先要確保你的linux系統中已經安裝了ssh,對于ubuntu系統一般默認只安裝了ssh client,所以還需要我們手動安裝ssh server:
1
|
sudo apt-get install openssh-server |
二. SSH基本原理
2.1 基本原理
SSH之所以能夠保證安全,原因在于它采用了公鑰加密。過程如下:
- 遠程主機收到用戶的登錄請求,把自己的公鑰發給用戶;
- 用戶使用這個公鑰,將登錄密碼加密后,發送回來;
- 遠程主機用自己的私鑰,解密登錄密碼,如果密碼正確,就同意用戶登錄。
2.1 基本用法
SSH默認端口號為:22,可以根據自己的需要修改默認端口號為其它,并配合使用iptables過濾來限制遠程SSH登陸的ip。常用用法如下:
1
2
3
4
|
三. 配置SSH無密登陸
3.1 主要用與Hadoop集群配置中:
Hadoop運行過程中需要管理遠端Hadoop守護進程,在Hadoop啟動以后,NameNode是通過SSH(Secure Shell)來啟動和停止各個DataNode上的各種守護進程的。這就必須在節點之間執行指令的時候是不需要輸入密碼的形式,故我們需要配置SSH運用無密碼公鑰認證的形式,這樣NameNode使用SSH無密碼登錄并啟動DataName進程,同樣原理,DataNode上也能使用SSH無密碼登錄到 NameNode。
1. 首先,運行 ssh localhost 來產生 /home/用戶名/.ssh 目錄,然后執行下面命令,將生成的 “ id_rsa.pub ” 追加(這里切記是追加,不是覆蓋)到授權的key里面去。這樣的效果是實現了當前用戶無密SSH登陸到自己:
1
2
3
4
|
cd ~/. ssh # 如果找不到這個文件夾,先執行一下 "ssh localhost" ssh -keygen -t rsa # 將id_rsa.pub追加到authorized_keys cat ~/. ssh /id_rsa .pub >> ~/. ssh /authorized_keys |
2. 如果要實現無密登陸到其它的主機,只需將生成的 “ id_rsa.pub " 追加到其它主機的 ” ~/.ssh/authorized_keys “ 中去。這里我們使用的方法是先將本機的 ” ~/.ssh/id_rsa.pub “ 拷貝到你想無密登陸的主機上,再在相應的主機上使用 ” cat " 命令將” ~/.ssh/id_rsa.pub “ 追加到該主機的 ” ~/.ssh/authorized_keys “ 中。
1
2
3
4
5
6
7
8
9
|
# 假設我們的主機名為:A,用戶名:hadoop,ip:192.168.0.1 # 想要無密SSH登陸的主機名為:B, 用戶名:hadoop,ip:192.168.0.2 # 首先,我們使用A中的hadoop用戶拷貝 " ~/.ssh/id_rsa.pub " 到B的 " /home/hadoop/tmp/ " 目錄下 # 這里的ip也可以換為主機名 # 然后,ssh登陸B,將 " /home/hadoop/tmp/id_rsa.pub " 追加到 " ~/.ssh/authorized_keys " 中去。 cat /home/hadoop/tmp/id_rsa .pub >> ~/. ssh /authorized_keys |
現在,我們就可以在A中使用SSH無密登陸到B的hadoop用戶了,同理如果想無密登陸其它的主機都可以使用此方法。需要注意的是配置hadoop集群時需要Master和Slave可以互相SSH無密登陸。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。
原文鏈接:http://www.cnblogs.com/lijingchn/p/5580263.html