linux Ubuntu下SSH无密码验证配置的方法步骤
前言
SSH为SecureShell的缩写,是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。越来越多的小伙伴们使用远程登录,而ssh安全性无疑是很高的,那么我们现在来看看如何实现ssh无密码验证配置。
一.准备工作
首先要确保你的linux系统中已经安装了ssh,对于ubuntu系统一般默认只安装了sshclient,所以还需要我们手动安装sshserver:
sudoapt-getinstallopenssh-server
二.SSH基本原理
2.1基本原理
SSH之所以能够保证安全,原因在于它采用了公钥加密。过程如下:
- 远程主机收到用户的登录请求,把自己的公钥发给用户;
- 用户使用这个公钥,将登录密码加密后,发送回来;
- 远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。
2.1基本用法
SSH默认端口号为:22,可以根据自己的需要修改默认端口号为其它,并配合使用iptables过滤来限制远程SSH登陆的ip。常用用法如下:
#使用默认的22端口 sshroot@192.168.0.1 #若修改过SSH默认端口号(例如:修改为了1000),则登陆时需要指定端口号10000 sshroot@192.168.0.1-p10000
三.配置SSH无密登陆
3.1主要用与Hadoop集群配置中:
Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(SecureShell)来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到NameNode。
1.首先,运行sshlocalhost来产生/home/用户名/.ssh目录,然后执行下面命令,将生成的“id_rsa.pub”追加(这里切记是追加,不是覆盖)到授权的key里面去。这样的效果是实现了当前用户无密SSH登陆到自己:
cd~/.ssh#如果找不到这个文件夹,先执行一下"sshlocalhost" ssh-keygen-trsa #将id_rsa.pub追加到authorized_keys cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys
2.如果要实现无密登陆到其它的主机,只需将生成的“id_rsa.pub"追加到其它主机的”~/.ssh/authorized_keys“中去。这里我们使用的方法是先将本机的”~/.ssh/id_rsa.pub“拷贝到你想无密登陆的主机上,再在相应的主机上使用”cat"命令将”~/.ssh/id_rsa.pub“追加到该主机的”~/.ssh/authorized_keys“中。
#假设我们的主机名为:A,用户名:hadoop,ip:192.168.0.1 #想要无密SSH登陆的主机名为:B,用户名:hadoop,ip:192.168.0.2 #首先,我们使用A中的hadoop用户拷贝"~/.ssh/id_rsa.pub"到B的"/home/hadoop/tmp/"目录下 scp~/.ssh/id_rsa.pubhadoop@192.168.0.2:/home/hadoop/tmp #这里的ip也可以换为主机名 #然后,ssh登陆B,将"/home/hadoop/tmp/id_rsa.pub"追加到"~/.ssh/authorized_keys"中去。 cat/home/hadoop/tmp/id_rsa.pub>>~/.ssh/authorized_keys
现在,我们就可以在A中使用SSH无密登陆到B的hadoop用户了,同理如果想无密登陆其它的主机都可以使用此方法。需要注意的是配置hadoop集群时需要Master和Slave可以互相SSH无密登陆。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。