这里的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中配置时只要重复以上过程配置完所有的服务器即可。