Linux常用命令(5)--SSH访问远程服务器、SCP服务器间文件拷贝

一、使用"ssh"命令,登录访问远程服务器

  Linux是一个支持多用户操作的系统,在同一时刻允许多个用户同时访问系统,共享系统提供的服务。那么用户如何从不同的机器上访问同一台Linux服务器呢?此时就需要借助于SSH客户端,来进行用户登录和访问系统。

  查看"man ssh"在线文档,"ssh"命令描述信息如下:

  查看"ssh"在线文档可知,假设远程服务器ip地址为:192.168.100.36,远程用户名为:newbie,则访问远程服务器的命令如下:

ssh -l newbie 192.168.100.36

 

 二、基于服务器间密钥的方式,实现"ssh"远程免密码登录

  默认情况下,通过“ssh”客户端来访问远程服务器时,每次都要输入用户密码(在经常访问服务器时,此种体验让人很不爽)。实际上"ssh"可以实现免密码登录,实现的最简单的方法是创建一个公钥/私钥对,以此来验证服务器的有效性,替代密码验证。
  注意:免密登录也不是万能的。免密登录时,从一台【主机A】的用户userA,使用【主机B】的用户userB来登录到【主机B】,此时存在着严格的用户对应关系。基于密钥免密登陆的实现步骤如下:

  1、在客户端【主机A】生成一对密钥(公钥/私钥) 

基于空口令生成一个新的ssh密钥,以实现无密码登录,执行命令如下:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

参数说明: -t 加密算法类型,这里是使用rsa算法 -P 指定私钥的密码,不需要可以不指定 -f 指定生成秘钥对保持的位置

  2、客户端【主机A】,使用"ssh-copy-id"命令,将客户端【主机A】的公钥,发送个服务端【主机B】

       注:经过ssh-copy-id后接收公钥的服务端会把公钥追加到服务端对应用户的$HOME/.ssh/authorized_keys文件中 

ssh-copy-id userB@serverB

#注:执行此命令时,需要输入userB的登陆密码。

  

  3、客户端【主机A】,使用“ssh”命令访问服务器端【主机B】,进行登录操作

ssh -l userB serverB

  4、服务端根据客户端的用户名和主机名查找对应的公钥,将一个随机的字符串用该公钥加密后发送给客户端

  5、客户端用自己的私钥进行解密收到的字符串,并将解密后的字符串发送给服务端

  6、服务端对比发送出去的和接收到的字符串是否相同,如果相同,则登录成功。

 

三、设置“ServerAliveInterval”参数,保持SSH客户端的长链接

  用ssh连接服务器时,过段时间不用, 需要恢复一下断开的连接, 原因是NAT防火墙喜欢对空闲的会话进行超时处理,以确保它们状态表的干净和内存的低占用率,因为 长时间保持连接, 会长期占用部分系统资源, 为了节省系统资源,NAT防火墙就会把长时间的ssh连接断掉;频繁重连ssh总归是有些麻烦,下边是我对部分ssh工具解决方法:
使用命令参数进行ssh连接时加一个参数 -o ServerAliveInterval=30 (客户端主动向服务端请求响应的间隔为30s)来保持活动状态。

ssh -l 登录用户名 -o ServerAliveInterval=30  服务器地址

 

 四、服务器间,远程拷贝命"scp

  scp工具,是基于ssh远程安全登录的,可以将主机A上的文件或目录,拷贝给主机B并且可以改名字,也可以将主机B上的文件或目录下载到主机A中,同时也支持修改文件名。

  1、远程拷贝文件

scp 本机文件 user@host:路径/ 
注:将bigdata1上的
/etc/profile文件拷贝到bigdata2的根目录下 scp /etc/profile root@bigdata2:/
注:将bigdata1上的
/etc/profile文件拷贝到bigdata2的根目录下,并改名为profile.txt scp /etc/profile root@bigdata2:/profile.txt

 

  2、远程拷贝目录

scp -r 本机目录 user@host:路径/ 

注:将bigdata1上的/bin目录拷贝到bigdata2的根目录下 
scp -r /bin root@bigdata1:/home/ (-r 表示递归)

 

  3、下载文件到本地

scp user@host:文件名 本地目录 

注:将bigdata2上的/profile下载到本地并改名为profile.txt 
scp root@bigdata2:/profile ./profile.txt

 

  4、下载目录到本地

scp -r user@host:文件名 本地目录 

注:将bigdata2上的/bin下载到本地并改名为bin.bak 
scp -r root@bigdata2:/home/bin ./bin.bak

 

转载说明:本篇博客的“第二节”、“第四节”转载自网络。
原文标题:SSH远程登录和SSH免密码登录
原文地址:https://blog.csdn.net/m0_37822234/article/details/82494556
posted @ 2019-07-13 15:02  荆小六  阅读(5893)  评论(0编辑  收藏  举报