1 SSH登陆原理

  SSH,Secure Shell,是一套协议标准,可以用来实现两台机器之间的安全登陆以及安全的数据传送,其保证数据安全的原理是非对称加密。
  传统的对称加密方式使用的是一套密钥,数据的加密和解密用的是这一套密钥,所有的客户端和服务端都得存储这套密钥,泄漏风险很高,并且一旦泄漏,如果对数据拦截,就可通过该密钥解密获取数据内容,因此数据的安全性得不到保证。
  非对称加密方式解决的就是这个问题,它包含两套密钥-公钥以及私钥,其中,公钥用于加密,私钥用于解密,并且通过公钥计算不出私钥,因此私钥谨慎保存在服务端,公钥可随便传递,即使公钥泄漏也能保证数据安全。
  其中,客户端与服务端都各自拥有一套公钥和私钥,但必须有对方的公钥才能对数据加密后被对方所感知,这个过程是在连接时完成的,过程如下所示:
  (1)客户端发起连接请求
  (2)服务端返回自己的公钥以及会话ID   -->  客户端得到服务端的公钥
  (3)客户端生成密钥对
  (4)客户端用自己的公钥异或会话ID,计算出一个值,并用服务端的公钥进行加密
  (5)客户端发送加密后的值到服务端,服务端用私钥解密
  (6)服务端用解密后的值异或会话ID,计算出客户端的公钥 ---> 服务端得到客户端的公钥
  (7)至此连接建立,双方都各自持有三个密钥,分别为自己的一对公私钥以及对方的私钥,之后所有的通讯都会被加密。
 

  需要注意的是,当两台机器第一次使用SSH连接时,当服务端返回自己的公钥的时候,客户端会有一条提示信息,大意是无法验证对方是否可信,并给出对方公钥的MD5编码值,问是否确定要建立连接。如下图所示:
 

 
  原因:尽管SSH传输过程很安全,但首次建立链接时并没有办法知道发来的公钥是否真的来自自己请求的服务器,如果有人在客户端请求服务器后拦截了请求,并返回自己的公钥冒充服务器,这时候如果链接建立,那么所有的数据都能被攻击者用自己的私钥解密,这就是所谓的中间人攻击。
 
2 常用认证方法
 
  常用的认证方法包括账号密码登陆和公钥登陆两种。无论是哪一种都需要预先在服务端进行配置。
  2.1 账号密码登陆  
   特征:客户端通过账号密码进行登陆。但是只有当账号密码存在于服务端中才能验证通过。
   连接建立过程如下:
   (1)服务端收到登陆请求后,首先互换公钥,如上所示。
   (2)客户端用服务端的公钥加密账号密码并发送
   (3)服务端用私钥解密后得到账号密码,然后进行验证
   (4)服务端用客户端的公钥加密验证结果后返回
   (5)客户端用自己的私钥解密后得到验证结果
  2.2 公钥登陆
   特征:客户端通过root账号进行登陆则自动启用公钥登陆,无需输入密码,但是只有当本身的公钥存在于服务端的authorized_keys文件中才能验证通过。
   方法:将要免密登陆机器的公钥添加到服务端的authorized_keys文件中即可,其中,服务端该文件目录固定为/root/.ssh/authorized_keys。
   连接建立过程如下:
   (1)客户端用户必须手动的将自己的公钥添加到服务器一个名叫authorized_keys的文件里。(该文件保存了所有可以远程登陆的机器的公钥)
   (2)客户端发起登陆请求,并且发送一个自己公钥的指纹(具有唯一性,但不是公钥)
   (3)服务端根据指纹检测此公钥是否保存在authorized_keys中
   (4)若存在,则服务端生成一段随机字符串,然后用客户端公钥加密后返回
   (5)客户端收到后用自己的私钥解密,再利用服务端公钥加密后返回
   (6)服务端收到后用自己的私钥解密,如果为同一字符串则验证通过建立连接。

2 远程登陆

ssh  username@ip  -p port

3 远程数据CP

3.1 基本命令格式

   命令:scp [options] [原路径] [目标路径]
   用法:将原路径中的内容cp到目标路径中。
 3.2 options说明
   如果是复制文件,则无需指定options参数,如果是复制目录,则为-r
   如果需要指定端口,则需要使用-P参数,格式为:-P port

常用命令形式:

   从远程机器cp数据到本地机器
      scp [options] 客户端名@IP:远程文件目录 本地目录
   将本地机器的内容cp到远程机器
      scp [options] 本地目录 客户端名@IP:远程文件目录

远程登陆与数据CP的更多相关文章

  1. mysql开启远程登陆(修改数据表和授权两种方法)

    一.确认防火墙没有阻止3306端口(一般服务器默认会屏蔽掉) windows防火墙例外设置方法 控制面板(右上角选择查看方式为大图标)---防火墙---高级设置---高级设置---出站规则---最右边 ...

  2. linux系统新建用户ssh远程登陆显示-bash-4.1$解决方法

    linux系统新建的用户用ssh远程登陆显示-bash-4.1$,不显示用户名路径 网络上好多解决办法,大多是新建.bash_profile文件然后输入XXXXX....然而并没有什么用没有用.... ...

  3. [20150513]Linux远程登陆管理以及Vim的学习

    Linux远程登陆管理以及Vim的学习 实现Linux远程管理 所需工具Xshell,Xshell是一个用于MS Windows平台的强大的SSH,TELNET,和RLOGIN终端仿真软件.它使得用户 ...

  4. 一起来学linux:SSH远程登陆

    p { margin-bottom: 0.25cm; line-height: 120% } a:link { } 在最早的远程连接技术,主要是telnet和RSH为主.缺点也很明显,就是明文传输.在 ...

  5. Linux入门(1)_VMware和系统分区和系统安装和远程登陆管理

    1 VMware的安装和使用 注意有 快照 和 克隆 的功能. 快照相当于建立一个 系统还原点, 可以随时恢复到原来状态. 克隆功能可以复制一个和当前一样的系统,并可以选择链接安装,只使用很少的空间就 ...

  6. SSH免密远程登陆及详解

    SSH(安全外壳协议):为建立在应用层和传输层基础上的安全协议,ssh是目前较为可靠,专门为远程登陆,会话和其他网络服务提供安全 协议.利用ssh协议可以有效的防止远程管理过程中的信息泄露问题,传统的 ...

  7. 在远程登陆的主机上通过命令行源码编译安装 GNU M4、autoconf、automake 等程序

    由于实验需要,最近获得了一个实验室服务器的账号,平常主要通过 ssh 进行远程登陆进行实验.一方面,远程登录的机器只提供终端界面,一般只通过命令行进行任务操作:另一方面,由于是多人共享服务器,故而个人 ...

  8. linux系统新建用户ssh远程登陆显示-bash-4.1$解决方法,ssh-bash-4.1

    linux系统新建的用户用ssh远程登陆显示-bash-4.1$,不显示用户名路径 网络上好多解决办法,大多是新建.bash_profile文件然后输入XXXXX....然而并没有什么用没有用.... ...

  9. 很好用的取代 PuTTY 的SSH远程登陆软件 Termius

    一直以来, 我都是用 PuTTY 一个窗口一个窗口来监视我所有的远程服务器. putty-connections-on-a-screen 总感觉非常的不方便, 特别是当远程链接断开需要再重新打开PUT ...

随机推荐

  1. vueCli 运行报错

    error 如下: npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! shopping@0.1.0 serve: `vue-cli-service ...

  2. 别再问我 new 字符串创建了几个对象了!我来证明给你看!

    我想所有 Java 程序员都曾被这个 new String 的问题困扰过,这是一道高频的 Java 面试题,但可惜的是网上众说纷纭,竟然找不到标准的答案.有人说创建了 1 个对象,也有人说创建了 2 ...

  3. python基础:如何使用python pandas将DataFrame转换为dict

    之前在知乎上看到有网友提问,如何将DataFrame转换为dict,专门研究了一下,pandas在0.21.0版本中是提供了这个方法的.下面一起学习一下,通过调用help方法,该方法只需传入一个参数, ...

  4. 空间小姐姐生活照,我用python破解加密压缩包,无忧查看

    事情的经过是这样的: 又是奶茶,行吧行吧. 快点开工,争取李大伟回来之前搞定. 李大伟说是6位数字密码 那么我们可以利用python生成全部的六位数字密码 #生成从000000到99999的密码表f ...

  5. 机器学习常见面试题—支持向量机SVM

    前言 总结了2017年找实习时,在头条.腾讯.小米.搜狐.阿里等公司常见的机器学习面试题. 支持向量机SVM 关于min和max交换位置满足的 d* <= p* 的条件并不是KKT条件 Ans: ...

  6. Dom节点操作总结

    Dom   一:Dom的概念 Dom的简介:  全称为 document object model  文档对象模型,是操作文档的一整套方法 - 文档 - html,document时一个对象,是dom ...

  7. CSRF(跨站请求伪造)学习总结

    前言 参考大佬的文章,附上地址 https://www.freebuf.com/articles/web/118352.html 什么是CSRF? CSRF,中文名字,跨站请求伪造,听起来是不是和XS ...

  8. async 和 await 例子

    /// <summary> /// C# 5.0 /// .net framework4.5 /// CLR4.0 /// 引入了async 和 await.这两个关键字可以让你更方便的写 ...

  9. 如何让ThreadPoolExecutor更早地创建非核心线程

    最近在项目中遇到一个需要用线程池来处理任务的需求,于是我用ThreadPoolExecutor来实现,但是在实现过程中我发现提交大量任务时它的处理逻辑是这样的(提交任务还有一个submit方法内部也调 ...

  10. 总结php删除html标签和标签内的内容的方法

    来源:https://www.cnblogs.com/shaoguan/p/7336984.html 经常扒别人网站文章的坑们:我是指那种批量式采集的压根不看内容的:少不了都会用到删除html标签的函 ...