这里的SSH秘钥对登录是在Linux中配置Hadoop时用到的,为了使各个服务器之间能够无密码的相互通信,但同样也可用在两台Linux之间的相互通信,也可用在服务器管理人员无密码远程登录服务器,这样做既安全又方便。

这里把两台服务器作为实验对象,一台成为SSH客户机,一台成为SSH服务器;大致流程是先在SSH客户机(也就是客户端)上创建密钥对,然后上传公钥文件到SSH服务器,然后将公钥信息导入到公钥库文件 (家目录/.ssh/authorized_keys)中,注意不要写错文件库,最后在客户端使用私钥进行登录服务器。具体步骤如下:

步骤一:使用ssh-keygen   -t   rsa 命令创建秘钥对,分别为:id_rsa(私钥文件)和id_rsa.pub(公钥文件),密钥对保存在(/root/.ssh/)中,可以使用(cd   .ssh/ ,  ll )查看;

步骤二:执行scp   id_rsa.pub    root@192.168.44.3:/root (根据自己的主机地址写,这里的ip地址为SSH服务器的IP)命令,将公钥上传到服务端的/root/目录下;

步骤三:把公钥放到某一个用户的authorized_keys中,放到哪个用户下就可以让哪个用户登录。本例中放在root用户下,如果root用户下没有.ssh目录,就创建一个。具体指令如下:

mkdir   .ssh    //创建目录

cat      id_rsa.pub  //读一下公钥内容

cat    id_rsa.pub   》   .sh/authorized_keys     //把公钥文件内容追加到authorized_keys中

这样做的目的有利于多个客户端登录,如果单纯把id_rsa.pub改名为authorized_keys放到.ssh中,就只能允许一个客户端登录(服务器一般都是多用户进行管理);到这里基本上SSH密钥对登录就配置完成了,但是为了安全起见,一般还要进行一下的配置

步骤四:由于Linux中有一个强制安全的增强组件SELinux服务,而root创建的authorized_keys的权限默认为644(rw_r__r__),SELinux会认为它不安全强制用户把权限修改为600(rw_______)。

步骤五:SELinux对Linux系统影响太大,对于初学者不太适合,所以可以把它关掉。具体方法如下:

vi  /etc/selinux/config     //进入selinux的配置文件,把默认的‘SELinux=enforcing’ 修改为‘SELinux=disabled’,然后重启Linux系统。

步骤六:修改服务器端SSH配置文件:

vi   /etc/ssh/sshd_config

RSAAuthentication   yes    把这行前面的注释号(‘#’)去掉,表示打开RSA验证

PubkeyAuthentication  yes    同样把这行的注释号去掉,表示公钥验证打开。

Authorizedkeysfile      .ssh/authorized_keys      去掉注释号,允许使用公钥验证文件的保存位置。

passwordAuthentication   no(默认为yes)   进制使用密码验证登录(可选)

service  sshd  restart    // 重启ssh服务

注意:在使用远程工具Xshell登录时,只需要把id_rsa拷贝出来,然后在Xshell的用户身份验证中将password验证方式改为public key,将拷出来的id_rsa导入到用户秘钥就可以登录了。另外在Hadoop中配置时只要重复以上过程配置完所有的服务器即可。