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. 【公益线上自习室】不连麦,无微信群,无qq群

    马上就要到5月了,从刚开始的放纵已经逐渐变得慌乱. 疫情还没有完全过去,居家学习.工作是最好的选择. 但是,问题是,在家太舒服了,一点也不想学习. 一开始“哈哈哈哈哈哈哈哈”朋友了,现在已经开始“唉… ...

  2. vue使用trackingjs

    前言:因为公司是做人工智能-AI的,所有一个web数据平台为了装X,需要做个人脸登陆.前台需要把人脸的base64发给后台去做人脸校验. 功能很简单,需要注意的是web需要实现“调用摄像头”和“自动拍 ...

  3. phpstudy之访问loaclhost显示目录

    phpstudy版本:phpstudy2018 具体操作: 当前版本的默认设置访问网站根目录是不会显示目录的,需要我们设置,其实也很简单,只需两步就可以搞定 1.找到phpstudy目录下的www文件 ...

  4. 数据源管理 | PostgreSQL环境整合,JSON类型应用

    本文源码:GitHub·点这里 || GitEE·点这里 一.PostgreSQL简介 1.和MySQL的比较 PostgreSQL是一个功能强大的且开源关系型数据库系统,在网上PostgreSQL和 ...

  5. tf.keras的模块

          

  6. Java 虚拟机中的运行时数据区分析

    本文基于 JDK1.8 阐述分析 运行过程 我们都知道 Java 源文件通过编译器编译后,能产生相应的 .Class 文件,也就是字节码文件.而字节码文件通过 Java 虚拟机中的解释器,编译成特定机 ...

  7. 前端面试题之HTML和css-很实用的知识点

    display: none; 与 visibility: hidden; 的区别 相同: 它们都能让元素不可见 区别: display:none;会让元素完全从渲染树中消失,渲染的时候不占据任何空间: ...

  8. Python不同版本打包程序为.exe文件

    安装pyinstaller 测试用的python环境是3.6.2版本 下载地址 https://github.com/pyinstaller/pyinstaller/ 1.打开cmd,切到pyinst ...

  9. Windows挂载Gluster复制卷

    本地挂载测试 mount -t glusterfs 127.0.0.1:/gv1 /mnt [root@gluster1 mnt]# df -h Filesystem Size Used Avail ...

  10. [SketchUp]-绘制自己的家

    [SketchUp]-绘制自己的家 softsketchuphome 简介 最近已经完成了 毕业论文, 等待盲审的过程中, 将过去几年做的东西也都一一整理了, 硬盘中好几个不敢动的文件夹 也都可以删除 ...