Linux常用命令(5)--SSH访问远程服务器、SCP服务器间文件拷贝
<p><strong><span style="font-size: 16px">一、使用"ssh"命令,登录访问远程服务器</span></strong></p><p> Linux是一个支持多用户操作的系统,在同一时刻允许多个用户同时访问系统,共享系统提供的服务。那么用户如何从不同的机器上访问同一台Linux服务器呢?此时就需要借助于SSH客户端,来进行用户登录和访问系统。</p>
<p> 查看"man ssh"在线文档,"ssh"命令描述信息如下:</p>
<p><img src="https://img2018.cnblogs.com/blog/1492956/201907/1492956-20190713134116385-805960006.jpg"></p>
<p> 查看"ssh"在线文档可知,假设远程服务器ip地址为:192.168.100.36,远程用户名为:newbie,则访问远程服务器的命令如下:</p>
<div class="cnblogs_code">
<pre>ssh -l newbie 192.168.100.36</pre>
</div>
<p><img src="https://img2018.cnblogs.com/blog/1492956/201907/1492956-20190713141049175-167701663.jpg"></p>
<p> </p>
<p><strong><span style="font-size: 16px"> 二、基于服务器间密钥的方式,实现"ssh"远程免密码登录</span></strong></p>
<p> 默认情况下,通过“ssh”客户端来访问远程服务器时,每次都要输入用户密码(在经常访问服务器时,此种体验让人很不爽)。实际上"ssh"可以实现免密码登录,实现的最简单的方法是创建一个公钥/私钥对,以此来验证服务器的有效性,替代密码验证。 <br> 注意:免密登录也不是万能的。免密登录时,从一台【主机A】的用户userA,使用【主机B】的用户userB来登录到【主机B】,此时存在着严格的用户对应关系。基于密钥免密登陆的实现步骤如下:</p>
<p> 1、在客户端【主机A】生成一对密钥(公钥/私钥) </p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">基于空口令生成一个新的ssh密钥,以实现无密码登录,执行命令如下:
ssh</span>-keygen -t rsa -P '' -f ~/.ssh/<span style="color: rgba(0, 0, 0, 1)">id_rsa<br><br></span><span style="color: rgba(0, 0, 0, 1)">
参数说明:
</span>-<span style="color: rgba(0, 0, 0, 1)">t 加密算法类型,这里是使用rsa算法
</span>-<span style="color: rgba(0, 0, 0, 1)">P 指定私钥的密码,不需要可以不指定
</span>-f 指定生成秘钥对保持的位置 </pre>
</div>
<p><img src="https://img2018.cnblogs.com/blog/1492956/201907/1492956-20190713143632917-2128999197.png"></p>
<p> 2、客户端【主机A】,使用"ssh-copy-id"命令,将客户端【主机A】的公钥,发送个服务端【主机B】</p>
<p> 注:经过ssh-copy-id后接收公钥的服务端会把公钥追加到服务端对应用户的$HOME/.ssh/authorized_keys文件中 </p>
<div class="cnblogs_code">
<pre>ssh-copy-id userB@serverB<br><br>#注:执行此命令时,需要输入userB的登陆密码。</pre>
</div>
<p style="text-align: center"> <img src="https://img2018.cnblogs.com/blog/1492956/201907/1492956-20190713143657746-1220536263.png"></p>
<p> 3、客户端【主机A】,使用“ssh”命令访问服务器端【主机B】,进行登录操作</p>
<div class="cnblogs_code">
<pre>ssh -l userB serverB</pre>
</div>
<p> 4、服务端根据客户端的用户名和主机名查找对应的公钥,将一个随机的字符串用该公钥加密后发送给客户端</p>
<p> 5、客户端用自己的私钥进行解密收到的字符串,并将解密后的字符串发送给服务端</p>
<p> 6、服务端对比发送出去的和接收到的字符串是否相同,如果相同,则登录成功。</p>
<p><img src="https://img2018.cnblogs.com/blog/1492956/201907/1492956-20190713143909981-264052207.jpg"></p>
<p> </p>
<p><span style="font-size: 16px"><strong>三、设置“ServerAliveInterval”参数,保持SSH客户端的长链接</strong></span></p>
<p> 用ssh连接服务器时,过段时间不用, 需要恢复一下断开的连接, 原因是NAT防火墙喜欢对空闲的会话进行超时处理,以确保它们状态表的干净和内存的低占用率,因为 长时间保持连接, 会长期占用部分系统资源, 为了节省系统资源,NAT防火墙就会把长时间的ssh连接断掉;频繁重连ssh总归是有些麻烦,下边是我对部分ssh工具解决方法:<br>使用命令参数进行ssh连接时加一个参数 -o ServerAliveInterval=30 (客户端主动向服务端请求响应的间隔为30s)来保持活动状态。</p>
<div class="cnblogs_code">
<pre>ssh -l 登录用户名 -o ServerAliveInterval=30服务器地址</pre>
</div>
<p> </p>
<p><strong><span style="font-size: 16px"> 四、服务器间,远程拷贝命"<strong>scp</strong>" </span></strong></p>
<p><span style="font-size: 16px"><strong> scp工具,是基于ssh远程安全登录的,可以将主机A上的文件或目录,拷贝给主机B并且可以改名字,也可以将主机B上的文件或目录下载到主机A中,同时也支持修改文件名。</strong></span></p>
<p> 1、远程拷贝文件</p>
<div class="cnblogs_code">
<pre>scp 本机文件 user@host:路径/<span style="color: rgba(0, 0, 0, 1)"> <br>
注:将bigdata1上的</span>/etc/<span style="color: rgba(0, 0, 0, 1)">profile文件拷贝到bigdata2的根目录下
scp </span>/etc/profile root@bigdata2:/<span style="color: rgba(0, 0, 0, 1)"> <br>
注:将bigdata1上的</span>/etc/<span style="color: rgba(0, 0, 0, 1)">profile文件拷贝到bigdata2的根目录下,并改名为profile.txt
scp </span>/etc/profile root@bigdata2:/profile.txt</pre>
</div>
<p> </p>
<p> 2、远程拷贝目录</p>
<div class="cnblogs_code">
<pre>scp -r 本机目录 user@host:路径/<span style="color: rgba(0, 0, 0, 1)">
注:将bigdata1上的</span>/<span style="color: rgba(0, 0, 0, 1)">bin目录拷贝到bigdata2的根目录下
scp </span>-r /bin root@bigdata1:/home/ (-r 表示递归)</pre>
</div>
<p> </p>
<p> 3、下载文件到本地</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">scp user@host:文件名 本地目录
注:将bigdata2上的</span>/<span style="color: rgba(0, 0, 0, 1)">profile下载到本地并改名为profile.txt
scp root@bigdata2:</span>/profile ./profile.txt</pre>
</div>
<p> </p>
<p> 4、下载目录到本地</p>
<div class="cnblogs_code">
<pre>scp -<span style="color: rgba(0, 0, 0, 1)">r user@host:文件名 本地目录
注:将bigdata2上的</span>/<span style="color: rgba(0, 0, 0, 1)">bin下载到本地并改名为bin.bak
scp </span>-r root@bigdata2:/home/bin ./bin.bak</pre>
</div>
<p> </p>
<div class="cnblogs_code" style="text-align: left">
<pre><strong><span style="color: rgba(0, 0, 0, 1)">转载说明:本篇博客的“第二节”、“第四节”转载自网络。
原文标题:SSH远程登录和SSH免密码登录
原文地址:https:</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">blog.csdn.net/m0_37822234/article/details/82494556</span></strong></pre>
</div><br><br>
来源:https://www.cnblogs.com/newbie27/p/11180311.html
頁:
[1]