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. 解决xcode ***is missing from working copy

    这是由于SVN置顶文件导致的,cd 至项目根目录 命令行 输入 find . -type d -name .svn | xargs rm -rf

  2. Continue 和 Break

    1.什么是continue和break continue:继续的.持续的 break:冲断的.折断的 作用:用于终止循环体,主要用于switch条件语句和循环体条件语句(for.while.do-wh ...

  3. 前后端分离下用jwt做用户认证

    0 前后端分离下的用户信息认证 前端使用Vue+axios,后端使用SpringBoot+SpringSecurity. 为了解决http无状态的问题,我采用jwt(json web token)保存 ...

  4. IO多路复用小故事

    背景故事 小王住在某城市, 生活并长大. 最近, 小城引进了一个企业, 邮局. 这个邮局可了不得, 只要你花上几角钱, 就可以将一封信送到千里之外的朋友手中. 小王也趁机体验了一把, 得劲. 这天, ...

  5. C# WCF的通信模式

    wcf 通信模式一般分为三种; 1,请求/响应模式 2,单工模式 3,双工模式 一,请求/响应模式 请求/响应通信是指客户端向服务端发送消息后,服务端会向客户端发送响应.这也意味着在接收到服务的响应以 ...

  6. Jquery中 $.Ajax() 参数详解

    1.url:要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type:要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如pu ...

  7. 开发机直连 Docker 中的 Redis 容器小教程

    在笔者日常开发中,都是把redis装在windows系统中.虽然可以通过RedisDesktopManager等客户端工具连接操作redis,但是还是觉得low了一些.因为作为程序员,我可能更想在Li ...

  8. 编译原理-第四章 语法分析-4.6 简单LR技术

    简单LR分析方法 一.LR语言分析器模型与算法 1.输入.输出.栈和方法 2.LR语法分析表 3.LR分析程序 4.例 例1: 例2: 二.LR语法分析算法 1.LR语法分析算法的定义和概念 定义: ...

  9. Robot Framework -002 在Windows10上的安装

    机器人框架是使用Python实现的,并且还支持Jython(JVM),IronPython(.NET)和PyPy. 在安装框架之前,一个明显的前提条件是至少安装这些解释器之一. 下面列出了安装Robo ...

  10. 【Linux常见命令】paste命令

    paste - merge lines of files paste 命令用于合并文件的列. paste 指令会把每个文件以列对列的方式,一列列地加以合并. 语法: paste [OPTION]... ...