ssh简介原理

windows远程登录,QQ远程协助修电脑

简单说,SSH是一种网络协议,用于计算机之间的加密登录。最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。需要指出的是,SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。

实现的原理

(1)客户机向远程主机发送登录请求,并且把自己的公钥发送给远程主机。

(2)远程主机收到用户的登录请求,首先判断对应的用户主目录下是否存在.ssh/authorized_keys并且这个文件中有没有有## 客户机 ##的公钥时, 如果条件不成立,就会使用## 账户口令登录登录的方式 ##。同时向客户机返回1.## 自己的公钥 ##

如果条件成立,则会使用## 公私钥登录的方式 ##。同时向客户机返回1.自己的公钥;  2.客户机公钥加密过的## 一些验证信息 ##

账户口令登录登录的方式:(每次都需要输入密码,不能免密钥登录)

(3)用户使用这个公钥,将登录密码加密后,发送回来。

(4)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

基于公私钥登录的方式:(可以实现 免密钥登录)

能用到这种方式的前提是,用户已经将自己的公钥储存在远程主机上,这个是重点,也就是所谓的“公密钥分发”。

(3)用户用自己的私钥解密“随机信息”后,接着用“私钥”加密签名该“随机信息”,最后再用远程主机的公钥加密发送给远程主机。

(4)远程主机先用自己的私钥解密,然后在用事先储存的客户机公钥进行解密认证,得出“随机信息”,如果“随机信息”正确,就证明用户是可信的,直接允许登录shell,不再要求密码。

查看SSH客户端版本

有的时候需要确认一下SSH客户端及其相应的版本号。使用ssh -V命令可以得到版本号。需要注意的是,Linux一般自带的是OpenSSH: 下面的例子即表明该系统正在使用OpenSSH:

$ ssh -V

OpenSSH_3.9p1, OpenSSL 0.9.7a Feb 19 2003

下面的例子表明该系统正在使用SSH2:

$ ssh -V

ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on i686-pc-linux-gnu

生成密钥

在当前用户的主目录下生成密钥,并且放在一个.ssh的文件夹中。

1:生成密钥

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

********提示输入密码****************

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

********进入~/.ssh目录***************

cd ~/.ssh/

2:将密钥复制进入一个名字为"authorized_keys"中。

这个名字是默认的,不能改变,

因为系统就是根据这个文件来判断那些机器的公钥已经保存在这里了,

可以进行免钥登录。

cat id_rsa.pub >> authorized_keys

3:分发密钥 (这是最主要的!!) 
想方设法把这个authorized_keys文件发送给你想要登录的机器,并且追加到目标机器对应位置的authorized_keys文件中,这样目标机器就有了你的公钥,从而允许登录。 
这里用到了远程拷贝的方式

scp authorized_keys liufukin@hadoop:/home/liufukin/

最后去目的主机把这个文件追加到对应的.ssh目录下的authorized_keys 中。这样,目的主机就有了此客户机的“公钥”。

(还有共享文件的NFS共享文件的形式,使得所有机器上的authorized_keys 都一样,都拥有集群中所有主机的公钥!)

4:登录到目的主机有两种方式: 
1:)基于用户和口令的登录

ssh liufukin@hadoop2

liufukin@hadoop2's password:

//这边输入的是目的主机开机登录时的密码,这个是每一次都要输入的。不能够做免密钥登录。

2:)基于公私钥的验证登录(可以用于免密钥登录)

ssh hadoop2

Enter passphrase for key '/root/.ssh/id_rsa':

//这里输入的是客户机的公钥。而不是目的主机的公钥。

注意,这里的密码一定是客户机这边的公钥。

5:退出登录:exit

Windows下连接Linux的ssh工具有哪些

1.putty

PuTTY是一个Telnet、SSH、rlogin、纯TCP以及串行接口连接软件。较早的版本仅支持Windows平台,在最近的版本中开始支持各类Unix平台,并打算移植至Mac OS X上。除了官方版本外,有许多第三方的团体或个人将PuTTY移植到其他平台上,像是以Symbian为基础的移动电话。PuTTY为一开放源代码软件,主要由Simon Tatham维护,使用MIT licence授权。随着Linux在服务器端应用的普及,Linux系统管理越来越依赖于远程。在各种远程登录工具中,Putty是出色的工具之一。Putty是一个免费的、Windows x86平台下的Telnet、SSH和rlogin客户端,但是功能丝毫不逊色于商业的Telnet类工具。

2.Xshell

Xshell是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。

Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。除此之外,其还有丰富的外观配色方案以及样式选择。

3. SecureCRT

SecureCRT支持SSH,同时支持Telnet和rlogin协议。SecureCRT是一款用于连接运行包括Windows、UNIX和VMS的理想工具。通过使用内含的VCP命令行程序可以进行加密文件的传输。有流行CRTTelnet客户机的所有特点,包括:自动注册、对不同主机保持不同的特性、打印功能、颜色设置、可变屏幕尺寸、用户定义的键位图和优良的VT100,VT102,VT220和ANSI竞争.能从命令行中运行或从浏览器中运行.其它特点包括文本手稿、易于使用的工具条、用户的键位图编辑器、可定制的ANSI颜色等.SecureCRT的SSH协议支持DES,3DES和RC4密码和密码与RSA鉴别。

4.Cygwin

Cygwin 是一款GNU和开源工具的集合,提供类似一个Windows平台下Linux的功能。Cygwin包括一个称为模拟库的Unix系统:cygwin.dll,集成大量GNU和其它免费软件。在安装包中,有高质量的编译器和其他软件开发工具、一个X11服务器、一套完整的X11开发套件、GNU emacs编辑器、Tex和LaTeX、openSSH(客户端和服务器),此外还包括在Windows下需要编译和使用PhysioToolkit软件的所有。

从windows访问linux,除了samba之外,日常操作用得最多的大概就是PuTTY和SecureCRT

Putty是免费的,SecureCRT是收费的(当然,有破解版)。

Putty缺省配置就很好看很好用,SecureCRT的缺省配置不是为linux准备的而且很难看。

Putty拿来就可以立刻使用,SecureCRT需要经过复杂的配置之后才好用,而且SecureCRT对linux下的emacs的支持不够好。

Putty支持vi结束之后回到以前的屏幕,SecureCRT我没发现这个功能。SecureCRT退出vi之后,屏幕上还有一堆刚才vi过的内容,不清爽。

以上这些区别使得SecureCRT用起来常常不顺手。

Putty不支持自动登录linux,SecureCRT支持自动登录linux。这个区别显得Putty更安全,SecureCRT更方便。

Putty不支持同时登录多个linux,SecureCRT可以在每个tab page里面登录一个linux。

以上两个区别使得SecureCRT更适合系统管理员使用。

在写代码调程序,以及平常使用的时候,我更愿意用putty。但是当我需要象系统管理员那样操作很多台linux的时候,我更愿意用SecureCRT。

安装securecrt

破解工具安装路径

  解压到SecureCRT的安装路径即可。(默认 C:\Program Files\VanDyke Software\SecureCRT)

破解

  1.关闭CRT

  2.用管理员身份运行keygen.exe

  3.点击patch,选中俩次框框中的exe程序

  4.点击破解程序中的generate.

  5.按照破解程序中的信息填写SecureCRT中需要填写的信息即可

securecrt7常用快捷键

Alt + Enter -- 全屏

  Alt + B --打开新的连接

  Alt + 1/2/3/4/5.../9 -- 切换到第1/2/3/4/5.../9个标签

  Ctrl + A -- 光标移至行首。

  Ctrl + B -- 光标前移1个字符

  Ctrl + D -- 删除光标后1个字符

  Ctrl + E -- 光标移至行末

  Ctrl + F -- 光标后移1个字符

  Ctrl + H -- 删除光标前的1个字符

  Ctrl + J -- 回车

  Ctrl + k -- 删除当前光标至行末的字符

  Ctrl + P -- 显示前一条命令

  Ctrl + M -- 回车

  Ctrl + N -- 下一条命令

  Ctrl + T -- 交换光标前最后两个字符(思科路由器可用)

  Ctrl + U -- 清除当前行和缓存的输入

  Ctrl + V -- 输入ctrl字符

  Ctrl + W -- 删除当前光标至行首的字符

Tab --自动补全命令

(第三篇)SSH网络协议概述的更多相关文章

  1. 老猿学5G扫盲贴:推荐三篇介绍HTTP2协议相关的文章

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 5G中的服务化接口调用都是基于HTTP2协议的,老 ...

  2. 基础笔记(三):网络协议之Tcp、Http

    目录 一.网络协议 二.TCP(Transmission Control Protocol,传输控制协议) TCP头格式 TCP协议中的三次握手和四次挥手 TCP报文抓取工具 三.HTTP(Hyper ...

  3. 黑客编程教程(三)Windows 网络协议

    首先介绍一下网络协议:网络协议是网络上所有设备之间通信规则的集合,他定义了通信时信息必须采用的格式和这些格式的意义.大多数 网络协议都采用分层体系结,每一层都建立在他的下层之上,向他的上一层提供服务, ...

  4. 网络编程[第三篇]基于tcp协议实现远程连接

    需要用到subprogress模块来远程控制cmd控制台程序来得到控制台的输出信息 一.服务端 —— 控制输出信息 import socket import subprocess #socket实例化 ...

  5. 【渗透课程】第三篇-体验http协议的应用

    之前我们都了解了,访问网页时,客户端与服务端之间的请求与响应数据交互.本篇就浅谈它的应用. 利用HTTP拦截突破前段验证 比方说,我们在某个网页提交某些数据(例如留言.上传.插入xss等),发生错误( ...

  6. Python之路PythonNet,第三篇,网络3

    pythonnet   网络3 udp 通信 recvfrom sendtofork 多进程并发threading 多线程并发socketserver 系统模块 套接字的属性 setsockopt g ...

  7. JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用

    JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...

  8. 网络协议 3 - 从物理层到 MAC 层

        在上一篇博文中,我们见证了 IP 地址的诞生,机器一旦有了 IP,就可以在网络的环境里和其他的机器展开沟通了.     今天,我们来认识下 物理层 和 MAC 层.     日常生活中,身为 ...

  9. 网络协议 3 - 物理层 和 MAC 层

    在上一篇博文中,我们见证了 IP 地址的诞生,机器一旦有了 IP,就可以在网络的环境里和其他的机器展开沟通了.     今天,我们来认识下 物理层 和 MAC 层.     日常生活中,身为 90 后 ...

随机推荐

  1. Spring Boot 中自定义 SpringMVC 配置,到底继承谁哪一个类或则接口?

    看了这篇文章,写的非常的言简意赅,特此记录下: 1.Spring Boot 1.x 中,自定义 SpringMVC 配置可以通过继承 WebMvcConfigurerAdapter 来实现. 2.Sp ...

  2. python编程心得(1)

    1.创建字典     字典名 = {键名1:键值1,键名2:键值2,...}     sanguo = {"诸葛亮草船借箭":"满载而归","关公赴会 ...

  3. C语言一行语句太长的换行处理方法

    [toc] 1.C语言中代码的多行书写 对C语言初学者来说,编写的程序的功能很简单,一句代码很短,但是在实际开发中,参数往往很长很多,一句代码可能会很长,需要用多行才能书写. 如果我们在一行代码的行尾 ...

  4. 下载安装配置 Spark-2.4.5 以及 sbt1.3.8 打包程序

    文章更新于:2020-03-29 按照惯例,文件附上链接放在文首. 文件名:spark-2.4.5-bin-without-hadoop.tgz 文件大小:159 MB 下载链接:https://mi ...

  5. git rebase解决合并冲突

    git rebase解决合并冲突   记录合并冲突解决方法,使用的git rebase,感觉很好用 1.git rebase 文档 https://git-scm.com/docs/git-rebas ...

  6. Java第三十三天,IO操作(续集),字符转换流

    计算机都是以二进制码格式存储文件的,但是在读写文件的过程中,每个应用程序都有自己的编码格式.FileWrite和FileRead类是通过查询系统默认码表进行读写的,因此在自己的系统上能够实现编码的智能 ...

  7. 2017蓝桥杯等差素数(C++B组)

    题目 :                                            等差素数列 2,3,5,7,11,13,....是素数序列.类似:7,37,67,97,127,157 ...

  8. javascript 入门 之select2获取远程数据

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"/> <meta lan ...

  9. substr和substring之间的区别

    substr 和 substring都是JS 截取字符串函数,两者用法很相近,下面是两者的语法很示例: substr 方法 返回一个从指定位置开始的指定长度的子字符串.stringvar.substr ...

  10. vue中SPA的优缺点和理解

    说说你对SPA的理解,他的优缺点分别是什么? SPA(single-page application) 尽在Web页面初始化时加载相应的HTML,JavaScript和CSS.一旦页面加载完成,SPA ...