結合Hadoop,簡單理解SSH


在啟動dfs和yarn時,需要多次輸入密碼,不但啟動本機進程還有輔服務器啟動那些節點也需要相應密碼,主與輔服務器之間是通過SSH連接的,並發送操作指令

一、ssh密碼遠程登錄

1、使用ssh連接另一台centos7系統,現在我是在192.168.36.133服務器上,用戶是hjp要連接192.168.36.134服務器並使用134服務器root用戶登錄

[hjp@localhost ~]$ ssh root@192.168.36.134

第一次登入需要加密,問是否繼續,輸入yes繼續即可,然后會輸入遠程服務器用戶對應的密碼,這樣就遠程登錄成功了

[hjp@localhost ~]$ ssh root@192.168.36.134
root@192.168.36.134's password:
Last login: Thu Oct 6 19:19:41 2016 from 192.168.36.133
[root@localhost ~]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.36.134 netmask 255.255.255.0 broadcast 192.168.36.255
inet6 fe80::20c:29ff:fe41:166c prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:41:16:6c txqueuelen 1000 (Ethernet)
RX packets 4088 bytes 420259 (410.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2585 bytes 728262 (711.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 93876 bytes 380613241 (362.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 93876 bytes 380613241 (362.9 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@localhost ~]#

IP已經變了,證明遠程登錄成功,使用exit命令便退回到本機

2、ssh遠程命令操作,比如下面遠程創建一個文件夾testssh

首先看一下134服務器home路徑下文件

[root@localhost home]# ll
total 0
drwxr-xr-x. 3 root root 51 Oct 6 11:03 hadoop
drwxr-xr-x. 3 root root 56 Oct 6 10:58 jdk
[root@localhost home]#

然后在133服務器上用ssh遠程在home下創建一個testssh文件夾,注意如果當期用戶名和遠程服務器用戶名一樣,可以省略@符號及前面用戶名,直接寫服務器地址

[hjp@localhost home]$ ssh root@192.168.36.134 mkdir /home/testssh
root@192.168.36.134's password:
[hjp@localhost home]$

現在在看一下134服務器home文件夾下文件

[root@localhost home]# ll
total 0
drwxr-xr-x. 3 root root 51 Oct 6 11:03 hadoop
drwxr-xr-x. 3 root root 56 Oct 6 10:58 jdk
drwxr-xr-x. 2 root root 6 Oct 6 19:48 testssh
[root@localhost home]#

二、ssh公鑰私鑰登錄

 1、公鑰私鑰簡單實現原理

比如兩台服務器A、B,A要通過SSH遠程B,A首先本地生成公鑰私鑰對,將公鑰發送給B,B收到A的公鑰后加入到自己授權列表中。此時A、B公鑰私鑰對配置完成

在A請求遠程B時,B先在授權列表中檢查是否有A相關登錄用戶配置,如果有,那么就B就用A的公鑰加密一段信息,發送給A,A收到后用私鑰解密,然后發回給B,B就接收A解密后的信息,與發出的信息進行校驗,如果校驗成功則允許登錄

2、現有192.168.36.133和192.168.36.134兩台服務器,用133去遠程134

  1)、[hjp@localhost ~]$ ssh-keygen -t rsa    -t用來指定加密算法,此處使用的是rsa,生成公鑰私鑰對;回車后會有一些配置操作,全部使用默認

  2)、通過Enter file in which to save the key (/home/hjp/.ssh/id_rsa): 可知秘鑰存放位置

[hjp@localhost ~]$ cd /home/hjp/.ssh
[hjp@localhost .ssh]$ ll
total 12
-rw-------. 1 hjp hjp 1679 Oct 7 13:27 id_rsa
-rw-r--r--. 1 hjp hjp 407 Oct 7 13:27 id_rsa.pub
-rw-r--r--. 1 hjp hjp 176 Oct 7 12:02 known_hosts
[hjp@localhost .ssh]$

  id_rsa為私鑰,id_rsa.pub為公鑰

  3)、通過ssh拷貝公鑰到134服務器上,上面也說過,如果兩個服務器登錄用戶一樣就可以省略@符號及前面用戶名

[hjp@localhost .ssh]$ scp id_rsa.pub root@192.168.36.134:/home/testssh
root@192.168.36.134's password:
id_rsa.pub 100% 407 0.4KB/s 00:00
[hjp@localhost .ssh]$

  已經成功拷貝過去

  4)、在134服務器上將公鑰加入到授權列表中,授權列表文件authorized_keys在.ssh文件夾下,如果沒有就新建,一般沒有配置過是不存在這個文件的

[root@localhost .ssh]# cat /home/testssh/id_rsa.pub >>authorized_keys 

然后cat authorized_keys 可以查看到已經加入到授權列表文件中,這樣就配置完成了,使用133通過SSH遠程134就不用輸入密碼了。

注意:如果新建的authorized_keys文件,權限一般是-rw-rw-r--,必須改權限為-rw-------(命令:chmod 600 authorized_keys)

  5)、測試登錄

[hjp@localhost .ssh]$ ssh root@192.168.36.134
Last login: Thu Oct 6 20:48:19 2016 from 192.168.36.1
[root@localhost ~]#

 

 

公鑰私鑰和authorized_keys 都在~/.ssh文件夾下

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM