(第三篇)SSH网络协议概述

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 FilesVanDyke SoftwareSecureCRT)

破解

  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 --自动补全命令

原文地址:https://www.cnblogs.com/wsxcode/p/9570841.html