SSH 為 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;SSH 為建立在應用層和傳輸層基礎上的安全協議。SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。
在Hadoop集群或其他集群中廣泛應用用,可用於機器之間免密碼登錄和執行腳本,如的Hadoop集群中NameNode啟動的時候會遠程執行腳本把集群中DataNode的也一起啟動起來。
這里主要介紹SSH的配置和登錄失敗的情況
SSH配置
的集群中的每台主機上打開配置
sudo vim /etc/ssh/sshd_config
開啟下面的選項
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
生成SSH密鑰
的集群中的每台主機上執行下面命令,一路回車,可生成本機的rsa類型的密鑰。
ssh-keygen -t rsa
執行完之后在~/.ssh/目錄下會生成一個保存有公鑰的文件:id_rsa.pub
把公鑰寫入authorized_keys文件
把自己的公鑰拷貝到集群中的Master機
ssh-copy-id hadoop@HadoopMaster
最終在Master機上生成如下的內容的~/.ssh/authorized_keys文件:
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArYU2kMXsu75Gzwvuby7OoGzC7GVwxVo+ol/7nJVD BpKpJLRHRe/d2HSNe9ZZRWLK2tU0e41baMxrYRoAKJA2ujcWfy7t57c3ArO9hA7KJy7MqMiT8WHQ M3I2Afsx6sVKeQU/czDLXHn+KjwKbR8z0tuycgtxgkaWx1PCpCKeFDAXDVvxYcurSUNaIGL5Egzu Iy97N52ld/WxUZnRRsTPdpW88JkhWdOV1Bdo4O67rNv5tSYKHXfPwqi8NekqoHIExgVRsHLvM8fe xvV4mo8lXYdQPRCyrtM9/V+4kSW8eaBO7w6hM9YVZIspSqx0+OqibWTvqSmiAVh0JmUT0MCeVQ== hadoop@HadoopMaster
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA7n27x4qSzRQNGQAL+rT1+91IQnM9cwZYFeSUzrJD GDfwCTJMKnRBYxrDMxTAM6MKjfwwkPzXnbKHLQnDiJKUSdF8H2xcgDMBJLssVQjOc2jSEg/VppQN hJwObbIL3k1FbU2KxkOp7yW5PIodZrgUwlH5wdXtfsPKimvv72uA1KUiqPbYA3ZJqXw9Bt87K6Sv IAkvUjshnfaS+wNEBVwW1dhXyz6DHuY+Tn9330+1oYfdmgSjS4ZqvZVothhhV58DNwzAYwINCpBA tkjFbk/SOf0q/4rSJRpe2yH9xOuZdwqXMfk3dkp0UFZkV2EVSLyaCNKwTbSuKN75FWhgl8QB7w== hadoop@HadoopSlave1 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAw91O/1NWnbr6/vop+xwnqR/XYNpwkWselzyHNqgD PYgXXsDHsvOZbpTX7pgOTgVSmlZetCdX4C1lsc/PO8IitvvBS/qWU216lXaqlW61RcliCrYH/RwN f8XTLx/Ga04w2qEIFlLOiuH6x/KA22muOLYaSIefXv38xj0Hj41iE5ZIseaLuJogn7iqJ6Fq0wQH i6ueF9BasSWnOHhn6CJamYz3FC9r2m3vwPMkgagPp1FdYyDxodK+MZlwu6TxqP6QQ7BY/Wh5DZK8 C8zpDOZGQgWOrghF58TlZSmJYmukv1NqsY8PCFuoj7vfoUzVKQkyKcEiohwBcTb50vGPl06bMQ== hadoop@HadoopSlave2
把HadoopMaster的authorized_keys拷貝到HadoopSlave1和HadoopSlave2
scp ~/.ssh/authorized_keys hadoop@HadoopSlave1:~/.ssh/ scp ~/.ssh/authorized_keys hadoop@HadoopSlave2:~/.ssh/
重啟SSH服務
sudo service sshd restart
測試連接
ssh HadoopSlave1
常見免密碼登錄失敗分析
配置問題
- 檢查配置文件/etc/ssh/sshd_config是否開啟了AuthorizedKeysFile選項
- 檢查AuthorizedKeysFile選項指定的文件是否存在並內容正常
目錄權限問題
- ~權限設置為700
- ~/.ssh權限設置為700
- ~/.ssh/authorized_keys的權限設置為600
sudo chmod 700 ~ sudo chmod 700 ~/.ssh sudo chmod 600 ~/.ssh/authorized_keys
設置完了記得重啟ssh服務