linux Ubuntu下SSH无密码验证配置的方法步骤
<p><span><strong>前言</strong></span></p>
<p>
SSH为Secure Shell 的缩写,是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。越来越多的小伙伴们使用远程登录,而ssh安全性无疑是很高的,那么我们现在来看看如何实现ssh无密码验证配置。</p>
<p>
<span><strong>一. 准备工作</strong></span></p>
<p>
首先要确保你的linux系统中已经安装了ssh,对于ubuntu系统一般默认只安装了ssh client,所以还需要我们手动安装ssh server:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_155076">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">sudo</code> <code class="bash plain">apt-get </code><code class="bash functions">install</code> <code class="bash plain">openssh-server</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<span><strong>二. SSH基本原理</strong></span></p>
<p>
<strong>2.1 基本原理</strong></p>
<p>
SSH之所以能够保证安全,原因在于它采用了公钥加密。过程如下:</p>
<ol>
<li>
远程主机收到用户的登录请求,把自己的公钥发给用户;</li>
<li>
用户使用这个公钥,将登录密码加密后,发送回来;</li>
<li>
远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。</li>
</ol>
<p>
<strong>2.1 基本用法</strong></p>
<p>
SSH默认端口号为:22,可以根据自己的需要修改默认端口号为其它,并配合使用iptables过滤来限制远程SSH登陆的ip。常用用法如下:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_711460">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash comments"># 使用默认的22端口</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash functions">ssh</code> <code class="bash plain">root@192.168.0.1</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash comments"># 若修改过SSH默认端口号(例如:修改为了1000),则登陆时需要指定端口号10000</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash functions">ssh</code> <code class="bash plain">root@192.168.0.1 -p 10000</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<span><strong>三. 配置SSH无密登陆</strong></span></p>
<p>
<strong>3.1 主要用与Hadoop集群配置中:</strong></p>
<p>
Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到 NameNode。</p>
<p>
1. 首先,运行 ssh localhost 来产生 /home/用户名/.ssh 目录,然后执行下面命令,将生成的 “ id_rsa.pub ” 追加(这里切记是追加,不是覆盖)到授权的key里面去。这样的效果是实现了当前用户无密SSH登陆到自己:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_129478">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">cd</code> <code class="bash plain">~/.</code><code class="bash functions">ssh</code><code class="bash plain"> </code><code class="bash comments"># 如果找不到这个文件夹,先执行一下 "ssh localhost"</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash functions">ssh</code><code class="bash plain">-keygen -t rsa</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash comments"># 将id_rsa.pub追加到authorized_keys</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash functions">cat</code> <code class="bash plain">~/.</code><code class="bash functions">ssh</code><code class="bash plain">/id_rsa</code><code class="bash plain">.pub >> ~/.</code><code class="bash functions">ssh</code><code class="bash plain">/authorized_keys</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
2. 如果要实现无密登陆到其它的主机,只需将生成的 “ id_rsa.pub " 追加到其它主机的 ” ~/.ssh/authorized_keys “ 中去。这里我们使用的方法是先将本机的 ” ~/.ssh/id_rsa.pub “ 拷贝到你想无密登陆的主机上,再在相应的主机上使用 ” cat " 命令将” ~/.ssh/id_rsa.pub “ 追加到该主机的 ” ~/.ssh/authorized_keys “ 中。</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_896284">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash comments"># 假设我们的主机名为:A,用户名:hadoop,ip:192.168.0.1</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash comments"># 想要无密SSH登陆的主机名为:B, 用户名:hadoop,ip:192.168.0.2</code>
</div>
<div class="line number3 index2 alt2">
</div>
<div class="line number4 index3 alt1">
<code class="bash comments"># 首先,我们使用A中的hadoop用户拷贝 " ~/.ssh/id_rsa.pub " 到B的 " /home/hadoop/tmp/ " 目录下</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash functions">scp</code> <code class="bash plain">~/.</code><code class="bash functions">ssh</code><code class="bash plain">/id_rsa</code><code class="bash plain">.pub hadoop@192.168.0.2:</code><code class="bash plain">/home/hadoop/tmp</code>
</div>
<div class="line number6 index5 alt1">
<code class="bash comments"># 这里的ip也可以换为主机名</code>
</div>
<div class="line number7 index6 alt2">
</div>
<div class="line number8 index7 alt1">
<code class="bash comments"># 然后,ssh登陆B,将 " /home/hadoop/tmp/id_rsa.pub " 追加到 " ~/.ssh/authorized_keys " 中去。</code>
</div>
<div class="line number9 index8 alt2">
<code class="bash functions">cat</code> <code class="bash plain">/home/hadoop/tmp/id_rsa</code><code class="bash plain">.pub >> ~/.</code><code class="bash functions">ssh</code><code class="bash plain">/authorized_keys</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
现在,我们就可以在A中使用SSH无密登陆到B的hadoop用户了,同理如果想无密登陆其它的主机都可以使用此方法。需要注意的是配置hadoop集群时需要Master和Slave可以互相SSH无密登陆。</p>
<p>
<span><strong>总结</strong></span></p>
<p>
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。</p>
<p>
原文链接:http://www.cnblogs.com/lijingchn/p/5580263.html</p>
頁:
[1]