`

hadoop_ssh简介

 
阅读更多

 

 

 背景:

 

1 在hadoop分布式集群的机器之间,务必关闭防火墙,因为开启下,仅仅放开很少的几个端口,这个给集群见的通讯带来很不方便

 

2 ssh简介:

    a) 是加密协议,完成加密通讯的一个协议,

         对远程登陆和远程执行命令加密,防止网络监听而出现的密码泄漏

    b) 主要使用了rsa算法(不对称加密算法),通过执行ssh-keygen -t rsa

         来生成公钥id_rsa.pub,私钥id_rsa 这一对密钥对

    c) 生成的id_rsa.pub需要拷贝到目标服务器中,以保持到此机器时免密码登陆的目的

    d) 用来取代传统的telnet和R系列命令(rlogin,rsh,rexec等)

 

 

2.1 分类:
      目前有SSH1和SSH2,SSH2协议兼容SSH1,
      目前实现SSH1和SSH2协议的主要软件有
      a: OpenBSD组织开发的一款免费的SSH-->OpenSSH
      b: SSH Communications Security Corporation公司的收费软件SSH Communications

      在linux、FreeBSD、OpenBSD、NetBSD等免费类UNIX系统种,都使用OpenSSH作为SSH协议的实现软件.

 

3 如下没有配置ssh免密码登陆114的情况(从113免密码登陆114)

[root@master ~]# ssh root@192.168.1.114
The authenticity of host '192.168.1.114 (192.168.1.114)' can't be established.
RSA key fingerprint is 3b:2b:d5:57:a0:44:ab:2d:bd:b8:67:35:46:0c:c5:15.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.114' (RSA) to the list of known hosts.
Address 192.168.1.114 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
root@192.168.1.114's password: 
Last login: Wed Jul 30 02:19:40 2014 from 192.168.1.156
[root@sliver114 ~]#

如上免登陆流程解释如下:

第一次登陆到114后,ssh就会把登陆的ssh指纹放在114机器用户home/.ssh/know_hosts 文件中,

eg:

[root@master .ssh]# cat known_hosts 
sliver114,192.168.1.114 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtahDTCWYEl8EXku1wLOUH8j1Jr6C5hnopHW3oYevXmAC75ffshnYhkEe2oYdjcfYkO/SoJnUMfpX0rIDWKjb92U3Rgt9mNCoWqRNkRiGzdinVZ3QBYnz27QOOjEZtItIYzEhzMfNtUcmAa8Z8FLa/RHkPqkYi0+xWTb4TCjMkTdxGStfA1exsz/IuCQshVCTtCiiPOfoBDkrYvpIS2Vw0L46HYhqq1pruSpuzTekOTOZW8GoZ85s8nlhrVCGskkGQrA1H7567aYqT0exnXmZez605FN3/TR7Vyc9eb7xcttk1rB4e+pntZUK8PAEyo/c5a6nBDesEszjf15yGMAMNQ==

 
如果远程系统重装过系统,ssh指纹已经改变,你需要把 .ssh 目录下的know_hosts中的相应指纹删除,再登陆回答yes,方可登陆。
.ssh目录权限(用户自己的目录)必须是700,用户的home目录不能给其他用户读写查看权限,否则ssh服务器会拒绝登陆,
如果发生不能登陆的问题,请察看服务器上的日志文件/var/log/secure。通常能很快找到不能登陆的原因。

 

 

 

 

 

 4 如下流程实现机器 113, 114之间无密码登陆操作(前提是两台机器的防火墙都关闭):

 

    4.1)分别在113, 114机器上 通过ssh-keygen -t rsa 命令创建各自机器的 密钥对

            如下是114生成自己密钥对, 同样写法生成113的密钥对

[root@sliver114 ~]# ssh-keygen -t rsa

[root@sliver114 ~]# cd ~/.ssh
[root@sliver114 .ssh]# ls
id_rsa  id_rsa.pub

 

    4.2)  实现113机器到114机器的ssh连接:

 

 4.2.1)拷贝113公钥到114 并重命名

[root@master .ssh]# scp id_rsa.pub  root@192.168.1.114:/root/.ssh/authorized_keys



  4.2.2)在114中查询拷贝后的结果,并确认拷贝过来的文件权限为-rw-r--r-- 

[root@sliver114 .ssh]# ls -l
total 24
-rw-r--r-- 1 root root  393 Jul 30 02:48 authorized_keys    必须确定此文件是左侧权限 否则需要手动修改
-rw------- 1 root root 1675 Jul 30 02:45 id_rsa
-rw-r--r-- 1 root root  396 Jul 30 02:45 id_rsa.pub
[root@sliver114 .ssh]#

 

 4.2.3)113中 ssh 114 检查ssh免密码登陆是否生效,如果直接进入114 则单项到114成功

[root@master .ssh]# ssh 192.168.1.114
Address 192.168.1.114 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
Last login: Wed Jul 30 02:28:21 2014 from 192.168.1.113
[root@sliver114 ~]#

 

 

4.3) 实现114机器到113机器的ssh连接:

 

执行步骤和 4.2)一样, 这里不再详细贴操作流程

[root@sliver114 .ssh]# scp id_rsa.pub  root@192.168.1.113:/root/.ssh/authorized_keys
[root@sliver114 .ssh]# ssh 192.168.1.113   或者写成 
[root@sliver114 .ssh]# ssh root@192.168.1.113

 

 

 4.4) ssh面密码登陆交互流程如下:

 




 
 

 

 

 5 生成密钥和多机器免密钥登陆续:

 

命令解释:[root@master .ssh]# ssh-copy-id -i sliver103 

表示将master机器的公钥信息拷贝到sliver103机器的authorized_keys文件内

 

生成密钥解释续:

[root@mail ~]# ssh-keygen -b 1024 -t dsa -C gucuiwen@myserver.com
Generating public/private dsa key pair.
#提示正在生成,如果选择4096长度,可能需要较长时间
Enter file in which to save the key (/root/.ssh/id_dsa): 
#询问把公钥和私钥放在那里,回车用默认位置即可
Enter passphrase (empty for no passphrase): 
#询问输入私钥密语,为了实现自动登陆,应该不要密语,直接回车
Enter same passphrase again: 
#再次提示输入密语,再次直接回车
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
#提示公钥和私钥已经存放在/root/.ssh/目录下
The key fingerprint is:
71:e5:cb:15:d3:8c:05:ed:05:84:85:32:ce:b1:31:ce gucuiwen@myserver.com
#提示key的指纹



# ssh-keygen -b 1024 -t dsa -C gucuiwen@myserver.com:
-b 1024 采用长度为1024字节的公钥/私钥对,最长4096字节,一般1024或2048就可以了,太长的话加密解密需要的时间也长。
-t dsa  t:type 采用dsa类型加密方式的公钥/私钥对,除了dsa还有rsa方式,rsa方式最短不能小于768字节长度。
-C gucuiwen@myserver.com 对这个公钥/私钥对的一个注释和说明,一般用拥有者的邮件代替。可以省略不写,更多其他参数请man ssh-keygen。

ssh-keygen -t rsa : 通常我们直接用次方式来创建公钥私钥,生成结果如下:
  id_rsa  id_rsa.pub  known_hosts



id_dsa.pub: 产生的公钥,ssh默认的公钥文件是用户home/.ssh/authorized_keys,
把此本机产生的公钥id_dsa.pub需要cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys 操作,重命名成需要的名称然后
将客户端的authorized_keys上传到需要登陆的服务器的对应用户目录的home目录的.ssh目录下,
,这个文件中可以存放多个客户端的公钥文件,就好比一个大门上可以上很多锁,可以有不同的钥匙来尝试开锁,只要有一个锁被打开了,门就可以打开了。

eg: 多客户端机器实现无密码链接同一个服务器时,将多个客户端的公钥拷贝到服务端写法:
[root@master .ssh]# ssh-copy-id -i sliver103   这样master就可以无密码下访问 sliver103  
[root@sliver104 .ssh]# ssh-copy-id -i sliver103 这样sliver104就可以无密码下访问 sliver103 
查看 sliver103的authorized_keys:  
发现会增加:  
...== root@master  
...== root@sliver104
印证了 服务端公钥文件--->一个大门上可以上很多锁,每个锁都是对应客户端的公钥文件的说法

 

 多机器ssh互通下,

主要涉及如下两个文件,起作用为:

authorized_keys  存放所有客户端的公钥文件(实际就是将所有客户端rsa产生的pub文件拷贝到服务端)
 known_hosts  存放所有ssh进来的机器指纹

 

  • 大小: 155.7 KB
  • 大小: 1.4 MB
  • 大小: 10.7 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics