SSH个人小结
初学SSH的一些总结,主要来源于谷歌搜索和鸟叔的教程http://cn.linux.vbird.org/linux_server/0310telnetssh_2.php
以及阮一峰的博客http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html。
SSH(Secure SHell protocol),安全的壳程序协议。介绍它之前,简单介绍一下“非对称密钥系统”,阮一峰的一篇博文讲的非常好,http://www.ruanyifeng.com/blog/2006/12/notes_on_cryptography.html,同时还有一篇数字签名的文章也非常好,一并贴上来http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html。
加密方法可以分为两大类。一类是单钥加密(private key cryptography),还有一类叫做双钥加密(public key cryptography)。前者的加密和解密过程都用同一套密码,后者的加密和解密过程用的是两套密码。在单钥加密的情况下,密钥只有一把,所以密钥的保存变得很重要。一旦密钥泄漏,密码也就被破解。在双钥加密的情况下,密钥有两把,一把是公开的公钥,还有一把是不公开的私钥。双密钥加密有以下特点:
a) 公钥和私钥是一一对应的关系,有一把公钥就必然有一把与之对应的、独一无二的私钥,反之亦成立。
b) 所有的(公钥, 私钥)对都是不同的。
c) 用公钥可以解开私钥加密的信息,反之亦成立。
d) 同时生成公钥和私钥应该相对比较容易,但是从公钥推算出私钥,应该是很困难或者是不可能的。
由于每部主机都应该有自己的密钥(公钥与私钥),且公钥用来加密而私钥用来解密,其中私钥不可外流。但因为网络联机是双向的,所以,每个人应该都要有对方的『公钥』才对。
我们如果站在客户端的角度来看,那么,首先你必须要取得服务器端的公钥,然后将自己的公钥发送给服务器端, 最终在客户端上面的密钥会是『服务器的公钥加上客户端我自己的私钥』来组成的。
SSH的联机行为简介:
- 服务器建立公钥档:每一次启动sshd服务时,该服务会主动去找/etc/ssh/ssh_host*的档案,若系统刚刚安装完成时,由于没有这些公钥档案,因此sshd会主动去计算出这些需要的公钥档案,同时也会计算出服务器自己需要的私钥档;
- 客户端主动联机要求:若客户端想要联机到ssh服务器,则需要使用适当的客户端程序来联机,包括ssh, pietty等客户端程序;
- 服务器传送公钥档给客户端:接收到客户端的要求后,服务器便将第一个步骤取得的公钥档案传送给客户端使用(明码传送);
- 客户端记录/比对服务器的公钥数据及随机计算自己的公私钥:若客户端第一次连接到此服务器,则会将服务器的公钥数据记录到客户端的用户家目录内的~/. ssh/known_hosts 。若是已经记录过该服务器的公钥数据,则客户端会去比对此次接收到的与之前的记录是否有差异。若接受此公钥数据,则开始计算客户端自己的公私钥数据;
- 回传客户端的公钥数据到服务器端:用户将自己的公钥传送给服务器。此时服务器:『具有服务器的私钥与客户端的公钥』,而客户端则是: 『具有服务器的公钥以及客户端自己的私钥』,在此次联机的服务器与客户端的密钥系统(公钥+私钥)并不一样,所以才称为非对称式密钥系统。
- 开始双向加解密: (1)服务器到客户端:服务器传送数据时,拿用户的公钥加密后送出。客户端接收后,用自己的私钥解密;
(2)客户端到服务器:客户端传送数据时,拿服务器的公钥加密后送出。服务器接收后,用服务器的私钥解密。
第4 步骤中,客户端的密钥是随机运算产生于本次联机当中的,所以这次的联机与下次的联机的密钥可能就会不一样。此外在客户端的用户家目录下的~/.ssh/known_hosts 会记录曾经联机过的主机的public key ,用以确认我们是连接上正确的那部服务器。
这样一来,就确保了数据传输的保密性。
SSH指令
- 直接登入远程主机
ssh [-o 参数项目] [-p 其他端口] 账号 @ IP
-o:可用的参数有ConnectTimeout=秒数 联机等待的秒数,还有一些其他的。
-p:如果你需要连接的端口不是22,使用该选项
ssh user@host user指自己的用户名,host指远程主机,如果本地用户名与远程用户名一致,登录时可以省略用户名。
初次登陆需要做的事项在http://cn.linux.vbird.org/linux_server/0310telnetssh_2.php有详细描述,需要时可以参考。
- 模拟FTP 的文件传输方式: sftp
如果你只是想要从远程服务器下载或上传档案,可以使用sftp或scp。这两个指令也都是使用ssh的通道(port 22),只是模拟成FTP与复制的动作而已。
sftp user@host
登陆后的操作与ftp基本一致。主要写一下下载和上传指令。
上传:put [本机目录或档案] [远程]
put [本机目录或档案] ,如果是这种格式,则档案会放置到目前远程主机的目录下
下载:get [远程主机目录或档案] [本机]
get [远程主机目录或档案] ,若是这种格式,则档案会放置在目前本机所在的目录当中
- 档案异地直接复制: scp
如果已经知道服务器上的档案档名,可以直接通过scp进行复制。
上传:scp [-pr] [-l速率] file [账号@]主机:目录名
下载:scp [-pr] [-l速率] [账号@ ]主机:file 目录名
-p :保留原本档案的权限数据;
-r :复制来源为目录时,可以复制整个目录(含子目录)
-l :可以限制传输的速度,单位为Kbits/s ,例如[-l 800] 代表传输速限100Kbytes/s
注意,上面的两个指令中,目录名都是指文件要“到达”的地方;file都是指要进行操作的文件。
SSH的细节设定可以参考鸟叔的教程,这里先不写。有需要的话会加上。
SSH个人小结的更多相关文章
- J2ee的SSM和SSH的小结
1.介绍SSM框架: SSM是指由Spring.SpringMVC.Mybatis三个开源框架整合的开发框架. a).Spring是一个轻量级的容器框架,核心是控制反转(IoC)和面向切面(AOP). ...
- 增强VPS SSH账号安全:改端口,禁用Root,密钥登录,Denyhosts防暴力攻击
VPS SSH账号是我们日常管理VPS的主要登入方式,尤其是Root账号,对Linux系统安全至关重要.以前好多站长喜欢用Putty中文版,这实际是别人修改官方Putty汉化而来,这些软件被植入了后门 ...
- ssh/openssh
http://www.cnblogs.com/wwufengg/articles/ssh-openssh-detail.html http://www.cnblogs.com/jjkv3/archiv ...
- Linux ssh命令详解
SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息. ...
- Linux ssh命令
SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息. ...
- Spring第三天
Spring第三天 整体课程安排(3天+2天): 第一天:Spring框架入门.IoC控制反转的配置管理.Spring Web集成.Spring Junit集成. 第二天:Spring AOP面向切面 ...
- Python之paramiko
一.基础 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.paramiko支持Linux, Solaris, BSD, MacOS X ...
- 【python】-- Socket
socket socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道来实现数据的互相传递. 我们知道网络 通信 都 是基于 ip+port 方能定位到目标的具体机器上的具体 ...
- Linux命令(持续更新)
1. tail 命令 tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件. tail -f filename 会把 filename 文件里的最尾部的内 ...
随机推荐
- kali linux 换国内源
输入命令 vim /etc/apt/sources.list 添加国内源 #中科大deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-f ...
- 适合刚刚学习编程的萌新:C语言编程学习制作超简单又好玩的报数游戏!
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- Linux文件的查找之find命令处理动作
查找到文件之后的处理动作 例如:找出来系统中比较大超过10G的并且存放时间超过一年的log文件并删除 find / -name ".log" -size +10G -mtime + ...
- Anderson《空气动力学基础》5th读书笔记 第2记——流体静力学初步
与物体在水中受到水的浮力一样,空气中的物体也会受到空气的浮力,但由于这个浮力往往比较小,实际中的很多问题我们常常将它忽略,而对于像热气球这样的靠空气的浮力产生升力的飞行器来说,空气的浮力是不能忽略的. ...
- 趣谈多线程(Python版)
温馨提示:本文篇幅较长,建议读者耐心阅读,本文中的代码经过笔者精心构思,可以复制过去运行一下,观察输出结果,所有代码在python3.5.0中测试通过. 文章目录 What is 多线程? Why w ...
- 2018HUAS_ACM暑假比赛5题解
目录 Problem A Problem B Problem C Problem D Problem E Problem F Problem A 思路 这是一道带权并查集问题 因为只有三种种类,我们分 ...
- C++实现求离散数学命题公式的真值表
一.实验内容 (1)求任意一个命题公式的真值表. (2)利用真值表求任意一个命题公式的主范式. (3)利用真值表进行逻辑推理. 注:(2)和(3)可在(1)的基础上完成. 二.实验目的 真值表是命题逻 ...
- hdu6115 Factory (LCA + 倍增)
Factory Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 132768/132768 K (Java/Others)Total ...
- 装java开发环境 报client/jvm.dll找不到
jdk安装成功,明明有jvm.dll就是找不到,导致eclipse打不开.此时eclipse为64位,jdk为32位:查了好多方法,不起作用.最后将jdk换位64位问题解决. 所以,一般64位的系统建 ...
- build设计模式
又叫生成器模式 public class MainActivity extends AppCompatActivity { TextView textView; Button button; prot ...