ssh_损失函数 - CSDN
ssh 订阅
SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。 展开全文
SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。
信息
简    称
SSH
作    用
提供安全性的协议
中文名
安全外壳协议
外文名
Secure Shell
ssh功能
传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的, 就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式, 就是“中间人”冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、PoP、甚至为PPP提供一个安全的"通道" [1]  。
收起全文
  • SSH从入门到精通+项目实战

    万人学习 2018-10-22 21:38:05
    1.掌握Struts1.x的导包及配置;Struts1.x结合JSP实现视图层的应用;2.掌握Struts2.x的导包及配置;Struts2.x结合JSP实现视图层的应用;3.掌握Hibernate的导包及配置;Hibernate结合JSP实现...5.SSH整合的配置及应用
  • SSH是什么??

    千次阅读 2019-05-22 21:57:53
    首先,SSH是struts+spring+hibernate的一个集成框架,它不是一个框架,而是把多个框架紧密的结合在一起,用于构建灵活的多层Web应用程序。 然后详细说一下组成SSH的这三个框架: Struts 1.什么是Struts?? Struts...
    • 首先,SSH是struts+spring+hibernate的一个集成框架,它不是一个框架,而是把多个框架紧密的结合在一起,用于构建灵活的多层Web应用程序。
    • 然后详细说一下组成SSH的这三个框架:

    Struts
    1.什么是Struts??
    Struts基于MVC的框架,它是通过采用JavaServlet/JSP技术来实现基于Java EEWeb应用的MVC设计模式的应用框架,是MVC的一个具体实现。
    2.Struts的核心构成是什么??在这里插入图片描述

    Struts的核心同样也是MVC的核心,Struts是MVC的一个具体产品。
    

    a.Model
    由Action,ActionForm以及JavaBean组成,其中ActionForm用于将用户请求的参数封装成为ActionForm对象,我们可以理解为实体,由ActionServlet转发给Action,Action处理用户请求,将处理结果返回到界面。
    b.View
    这一部分采用JSP和taglib来实现界面的渲染。
    c.Controller
    Controller是Struts的核心控制器,负责拦截用户请求,通过调用Model来实现处理用户请求的功能。
    3.为什么要使用Struts??
    使用Struts作为系统的整体基础架构,负责MVC的分离,将页面从业务逻辑分离出来,使用页面更加灵活多变,不会影响业务逻辑,简化了基于MVC的web应用程序的开发,使开发更高效。
    Hibernate
    1.什么是Hibernate??
    Hibernate是一个关系映射框架,它对JDBC进行了轻量级的封装,使我们使用面向对象的思想操作关系型数据库。
    2.Hibernate的核心组成??
    在这里插入图片描述
    3.为什么要使用Hibernate??
    a.Hibernate是JDBC的轻量级对象封装,使与关系型数据库打交道更轻松。
    b.对象化,使我们可以以面向对象的思想操作关系型数据库简化了Dao层的编码工作,使开发更对=对象话了。
    c.支持各种数据库,更换数据库简单,不需要改代码。
    Spring
    1.什么是Spring??
    是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。
    2.Spring的核心组成??
    在这里插入图片描述
    a.IOC
    它不是一个技术,是一种设计模式,通过依赖注入的方式,由spring管理和控制对象之间的依赖关系,避免硬编码所造成的过度程序耦合。
    b.AOP
    通过预编译的方式和运行期动态代理实现程序功能的唯一维护的一种技术。
    c.容器
    能管理对象的生命周期,对象与对象之间的依赖关系就是容器。
    3.为什么要使用Spring??
    Spring的核心思想是IOC和AOP,spring使管理对象更加方便,极大的降低了组件之间的耦合度。
    总结
    SSH不仅实现了视图,控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离,系统的灵活性更好,可复用性更高。

    展开全文
  • SSH 详解

    千次阅读 2018-08-08 15:47:01
    SSH服务详解   第1章 SSH服务 1.1 SSH服务协议说明 SSH 是 Secure Shell Protocol 的简写,由 IETF 网络工作小组(Network Working Group )制定;在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密...

    SSH服务详解

     

    第1章 SSH服务

    1.1 SSH服务协议说明

    SSH 是 Secure Shell Protocol 的简写,由 IETF 网络工作小组(Network Working Group )制定;在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后在进行数据传输。确保了传递的数据安全。

    SSH是专为远程登录会话和其他网络服务提供的安全性协议。利用 SSH 协议可以有效的防止远程管理过程中的信息泄露问题,在当前的生产环境运维工作中,绝大多数企业普遍采用SSH协议服务来代替传统的不安全的远程联机服务软件,如telnet(23端口,非加密的)等。

    在默认状态下,SSH服务主要提供两个服务功能:

    n 一是提供类似telnet远程联机服务器的服务,即上面提到的SSH服务。

    n 另一个是类似FTP服务的sftp-server,借助SSH协议来传输数据的.提供更安全的SFTP服务(vsftp,proftp)。

    1.1.1 ssh远程连接排错过程

    1.2 SSH加密技术说明

    简单的说,SSH加密技术就是将人类可以看得懂的数据,通过一些特殊的程序算法,把这些数据变成杂乱的无意义的信怠,然后,通过网络进行传输,而当到了目的地后,在通过对应的解密算法,把传过来的加密的数据信怠解密成加密前的可读的正常数据。因此,当数据在互联网上传输时即使被有心的黑客监听窃取了,也很难获取到真正黑要的数据。

    当前,网络上的数据包加密技术一般是通过所谓的一对公钥与私钥(PublickeyandPivatekey)组合成的密钥对进行加密与解密操作。如下图,A-Server要给B_Client传数据,首先会通过本地的公钥加密后再到发到网络上传输。而加密的数据到达B_Client端后,再经由B_Client本地的私钥将加密的数据解密出来。由于在intemet上传输过程中的数据是加密过的,所以,传输的数据内容一般来说是比较安全的。

     

    图1-1 ssh认证连接的过程

    1.2.2 ssh实现安全链接建立,利用要是和锁头

    1. 钥匙=私钥 锁头=公钥,私钥可以解密公钥

    2. 公钥可以再网络中传输,私钥再本地主机保存

    1.2.3 ssh加密算法

    v1漏洞: 密钥不更换

    v2 定期更换密钥

    利用Diffie-Hellman机制定期更新密钥

    1.3 ssh知识要点:

     ssh是安全的加密协议,用于远程链接linux服务器

     ssh 默认端口是22,安全协议版本sshv2,出来2之外还有1(有漏洞)

     ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务

     linux ssh 客户端包括ssh 远程链接命令,以及远程拷贝scp命令

    1.4 SSH服务软件详细说明

    1.4.1 什么是ssh服务

    SSH服务端是一个守护讲程 (daemon).他在后台运行并响应来自客户端的连接请求。 SSH服务端的讲程名为sshd,负责实时监听远程SSH客户端的远程连接请求,并进行处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接等。这个SSH服务就是我们前面基础系统优化中保留开机自启动的服务之。

    ssh客户端包含ssh以及像scp(远程拷贝) slogin(远程登陆) sftp(安全FTP文件传输)等应用程序。

    ssh的工作机制大致是本地的ssh客户端先发送一个连接请求到远程的ssh服务端,服务端检查连接的客户端发送的数据包和IP地址,如果确认合法,就会发送密钥给 SSH的客户端,此时,客户端本地再将密钥发回给服务端,自此连接建立。

    1.4.2 ssh软件安装

    客户端

    [root@nfs01 ~]# rpm -qf `which ssh`

    openssh-clients-5.3p1-122.el6.x86_64

    服务端软件

    [root@nfs01 ~]# rpm -qf `which sshd`

    openssh-server-5.3p1-122.el6.x86_64

    1.4.3 openssh-clinets 软件的主要内容:

    [root@nfs01 ~]# rpm -ql openssh-clients

    /etc/ssh/ssh_config         ---ssh客户端配置文件

    /usr/bin/.ssh.hmac

    /usr/bin/scp                  ---远程复制命令

    /usr/bin/sftp                 ---远程文件传输服务

    /usr/bin/slogin              ---远程登陆命令

    /usr/bin/ssh                  ---ssh远程登陆管理主机

    /usr/bin/ssh-add

    /usr/bin/ssh-agent

    /usr/bin/ssh-copy-id        ---ssh服务分发公钥命令

    /usr/bin/ssh-keyscan

    1.4.4 openssh-server 软件的主要内容

    [root@nfs01 ~]# rpm -ql openssh-server

    /etc/rc.d/init.d/sshd      #ssh服务启动脚本

    /etc/ssh/sshd_config       #ssh服务配置文件

    /etc/sysconfig/sshd        #ssh创建密钥有关

    /usr/sbin/.sshd.hmac       #ssh加密算法有关文件

    /usr/sbin/sshd             #ssh服务进程启动命令

    注意:使用sshd采用绝对路径进行启动

    [root@test ~]# sshd

    sshd re-exec requires execution with an absolute path

    1.5 ssh服务配置文件说明:

    01. 配置文件中所有注释信息,表示默认参数配置

    02. 配置文件中#空格 后面内容表示说明信息

                  #参数 表示配置参数信息

    03. 配置文件参数信息修改后,一旦变为注释,即还原为默认配置

    1.5.1 ssh服务的配置文件路径

    vim  /etc/ssh/sshd_config

    修改SSH服务的运行参数,是通过修改配置文件/etc/ssh/sshd_config实现的。

    一般来说SSH服务使用默认的配置已经能够很好的工作了,如果对安全要求不高,仅仅提供SSH服务的情况,可以不需要修改任何配置。

    1.5.2 配置文件中常用配置说明

    [root@test ~]# vim /etc/ssh/sshd_config

    #       $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $

     

    # This is the sshd server system-wide configuration file.  See

    # sshd_config(5) for more information.

     

    # This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin

     

    # The strategy used for options in the default sshd_config shipped with

    # OpenSSH is to specify options with their default value where

    # possible, but leave them commented.  Uncommented options change a

    # default value.

     

    # OpenSSH is to specify options with their default value where

    # possible, but leave them commented.  Uncommented options change a

    # default value.

     

    Port 25113                   #端口

    ListenAddress 10.0.0.41   #监听地址(本地网卡地址),指定本地网卡那个网卡提供服务

    PermitRootLogin no         #是否允许root用户登陆

    #PermitEmptyPasswords no  #禁止空密码登陆

    #UseDNS no                   #不使用DNS

    GSSAPIAuthentication no    #API认证

    # 连接慢的解决

    #AddressFamily any         #指定监听ipv4地址,或是ipv6地址,或者所有都监听

    配置文件内容说明:

    井号(#)注释的参数信息为默认配置

    井号(#)后面有空格的为描述信息

    井号(#)后面没有空格的为参数信息

    另外:配置文件参数信息修改后,一旦变为注释,即还原为默认配置

    1.5.3 配置文件语法检查方法

    使用sshd -t 命令 对配置文件的语法进行检查

    正确

    [root@backup ~]# sshd -t /etc/ssh/sshd

    Extra argument /etc/ssh/sshd.

    语法格式有错误  ↓

    [root@test ~]# sshd -t /etc/ssh/sshd_config

    /etc/ssh/sshd_config: line 50: Bad configuration option: uthorizedKeysFile

    /etc/ssh/sshd_config: terminating, 1 bad configuration options

    1.5.4 ListenAddress 监听地址的说明

    图1-2 ssh服务监听参数说明

    如图所示,sshd_config配置文件中实际监听本地的网卡,并非网络地址

    监听地址只能监听本地网卡上配置的地址,监听的网卡可以对请求做出相应,为未监听的网卡不响应请求。

    1.5.5 SSH配置文件相关参数详细说明

    命令参数

    参数说明

    Port

    指定sshd进程监听的端口号,默认为22.可以使用多条指令监听多个端口.

    默认将在本机的所有网络接□上监听,但是可以通过ListenAddress指走只在某个特定的接口上监听.

    PermitEmptyPasswords

    是否允许密码为空的用户远程登录.默认为"no"

    PermitRootLogin

    是否允许root登录.可用值如下:"yes"(默认)表示允许."no"表示禁止.

    "without-password"表示禁止使用密码认证登录."forced-commands-only"表示只有在指走了command选项的情况下才允许使用公钥认证登录.同时其它认证方法全部被禁止.这个值常用于做远程备份之类的事情.

    1.多开一个窗口

    2.临时多部署一条连接方式

    3.给普通用户sudo权限

    UseDNS

    指定定sshd是否应该对远程主机名进行反向解折,以检查此主机名是否与其IP地址真实对应.默认值为"yes”.

    ListenAddress

    指定监听并提供服务相应的网卡地址信息

    1.5.6 快速修改配置参数

    sed -i '13 iPort 52113\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthentication no'  /etc/ssh/sshd_config

    1.6 ssh服务认证类型

    01. 基于口令认证方式

    02. 基于密钥认证方式

    1.6.1 基于密码的认证类型

    基于口令的安全验证的方式就是大家现在一直在用的,只要知道服务器的SSH连接帐号和口令(当然也要知道对应服务器的 IP及开放的 SSH端口,默认为22 ),就可以通过 ssh客户端登录到这台远程主机。此时,联机过程中所有传输的数据都是加密的。

    演示了 SecureCR及ssh客户端连接,口令验证的测试。

    [root@test ~]# ssh 10.0.0.250

    The authenticity of host '10.0.0.250 (10.0.0.250)' can't be established.

    RSA key fingerprint is d3:41:bb:0d:43:88:da:a3:2c:e8:36:91:11:c9:e4:9c.

    Are you sure you want to continue connecting (yes/no)? yes

    Warning: Permanently added '10.0.0.250' (RSA) to the list of known hosts.

    root@10.0.0.250's password:    #需要输入密码

    Last login: Mon Oct 16 21:13:58 2017 from 10.0.0.1

    [root@test ~]#

    1.6.2 基于密钥的安全认证方法

    基于密钥的安全验证方式是指,需要依靠密钥,也就是必须事先建立一对密钥对,然后把公用密钥(锁头)(Public key)放在需要访问的目标服务器上,另外,还需要把私有密钥(钥匙)(Private key)放到SSH的客户端或对应的窖户端服务器上。

    私钥不能在网络中传输---私钥可以解密公钥

    公钥可以再网路中传输---公钥不能解密私钥

    此时,如果要想连接到这个带有公用密钥的SSH服务器,客户端SSH软件或者客户端服务器就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下寻找事先放上去的对应用户的公用密钥,然后把它和连接的SSH客户端发送过来的公用密钥进行比较。如果两个密钥一致,SSH服务器就用公用密钥加密"质询"(challenge)并把它发送给SSH客户端。

    1.7 基于秘钥登录配置

     

    1.7.1 环境准备

    作用

    主机名

    ip

    管理服务器

    m01

    10.0.0.61

    备份服务器

    backup

    10.0.0.41

    存储服务器

    nfs01

    10.0.0.31

    1.7.2 第一个里程碑: 在备份服务器上创建密钥对

    [root@backup ~]# ssh-keygen -t rsa

    Generating public/private rsa key pair.

    Enter file in which to save the key (/root/.ssh/id_rsa):   #指定密钥对的保存路径

    Enter passphrase (empty for no passphrase):        #为密钥对创建密码

    Enter same passphrase again:                          #确认为密钥对创建的密码

    Your identification has been saved in /root/.ssh/id_rsa.

    Your public key has been saved in /root/.ssh/id_rsa.pub.

    The key fingerprint is:

    72:48:65:1d:25:69:e1:4c:ae:2b:6f:a5:aa:70:96:1e root@backup

    The key's randomart image is:

    +--[ RSA 2048]----+     #2048表示加密的位数为2048位

    |        o.==.      |

    |       o =+.       |

    |      .  .+        |

    |     . . .         |

    |      o S           |

    |     . o ..        |

    |  . E . .o         |

    |   = . oo           |

    |    o..o.           |

    +-----------------+

    参数说明:

          -t 指定创建密钥对的类型,可以创建的类型如下↓

    Specifies the type of key to create.  The possible values are “rsa1” for protocol version 1 and “dsa”, “ecdsa” or “rsa” for protocol version 2.

    查看创建出来的密钥对:

    [root@backup ssh]# ll ~/.ssh/

    total 12

    -rw------- 1 root root 1675 Oct 18 11:07 id_rsa         #私钥文件

    -rw-r--r-- 1 root root  393 Oct 18 11:07 id_rsa.pub    #公钥文件

    -rw-r--r-- 1 root root  784 Oct 11 16:27 known_hosts

    1.7.3 第二个里程:将公钥分发给存储服务器

    [root@backup ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.1.31 #用户使用当前用户

    root@172.16.1.31's password:   #注意:首次分发密钥需要输入对端服务器的用户密码

    Now try logging into the machine, with "ssh '172.16.1.31'", and check in:

     

      .ssh/authorized_keys    #公钥分发到对端后进行改名

     

    to make sure we haven't added extra keys that you weren't expecting.

    说明:

       通过 man 手册找到密钥分发的命令格式。

       -i 参数指定 公钥文件的存放位置

    [use@]表示使用的用户,默认使用当前登陆的用户

    [root@backup ~]# man ssh-copy-id

    Formatting page, please wait...

    SSH-COPY-ID(1)                                                  SSH-COPY-ID(1)

    NAME

           ssh-copy-id  -  install  your  public  key in a remote machine's autho-

           rized_keys

    SYNOPSIS

           ssh-copy-id [-i [identity_file]] [user@]machine

    1.7.4 第三个里程碑:进行登录测试

    [root@backup ~]# ssh nfs01

    Last login: Wed Oct 18 10:13:17 2017 from 10.0.0.1

    [root@nfs01 ~]#

    1.8 telnet服务简介

    1.8.1 部署telnet服务

    第一个里程碑:安装telnet服务软件

    [root@test ~]# yum install telnet telnet-server -y

    第二个里程碑:设置开机自启动

    [root@test ~]# vim /etc/xinetd.d/telnet

    修改xinetd下的配置文件,从而管理telnet服务

    [root@test ~]# vim /etc/xinetd.d/telnet
    # default: on
    # description: The telnet server serves telnet sessions; it uses \
    #       unencrypted username/password pairs for authentication.
    service telnet
    {
            flags           = REUSE
            socket_type     = stream
            wait            = no
            user            = root
            server          = /usr/sbin/in.telnetd
            log_on_failure += USERID
            disable         = no
    }

    第三个里程碑: 启动xinetd 服务,让telnet能够开机自启动

    [root@test ~]# /etc/init.d/xinetd start

    Starting xinetd:                                           [  OK  ]

    1.8.2 客户端测试

    说明:

        telnet服务默认不支持root用户直接登陆。

    [C:\]$ telnet 10.0.0.250

    Connecting to 10.0.0.250:23...

    Connection established.

    To escape to local shell, press 'Ctrl+Alt+]'.

    CentOS release 6.9 (Final)

    Kernel 2.6.32-696.el6.x86_64 on an x86_64

    test login: oldboy

    Password:

    Last login: Wed Oct 18 09:41:19 from 10.0.0.1

    [oldboy@test ~]$

    1.8.3 ssh与telnet区别(对比示意图)

    01.ssh是加密的服务协议,telnet服务是非加密的

    02.ssh服务默认支持root用户登陆,telnet用户默认不支持root用户登陆

     

    1.9 进行免密码scp传输测试

    [root@backup ~]# scp -rp  /etc/hosts nfs01:/tmp/

    hosts                                         100%  357     0.4KB/s   00:00  

    1.9.1 scp的基本语法使用:

    scp - secure copy (remote file copy program)

    每次都是全量拷贝,增量拷贝rsync

    推:PUSH

    scp -P22 -rp /tmp/oldboy oldboy@10.0.0.143:/tmp

    参数说明:

    <- -P(大写,注意和ssh命令的不同)接端口,默认22端口时可以省略-P22;

    <- -r递归,表示拷贝目录;

    <- -p表示在拷贝前后保持文件或目录属性;

    <- -l limit 限制速度。

    <- /tmp/oldboy为本地的目录。“@”前为用户名,“@”后为要连接的服务器的IP。IP后的:/tmp目录,为远端的目标目录。

    说明:

    以上命令作用是把本地/tmp/oldboy拷贝到远端服务器10.0.0.143的/tmp目录;

    拉:PULL

    scp -P22 -rp root@10.0.0.7:/tmp/oldboy /opt/

    说明:

    还可以把远端目录抓到本地

    结论:

    scp为远程拷贝文件或目录的命令,更多用法,请man scp;

    拷贝权限为连接的用户对应的权限。

    1.10 使用sftp进行基于密钥的文件传输

    1.10.1 sftp简介

    sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的其中一部分.

    1.10.2 sftp命令说明

    [root@m01 ~]# sftp -oPort=22  172.16.1.31

    Connecting to 172.16.1.31...

    sftp>

    说明:

       -o        连接的时候指定选项

    Port=22  端口指定为22、

    1.10.3 sftp使用参数说明

    操作远程服务器

    ls    显示远端主机的列表

    cd   切换远程的工作目录

    pwd  显示远程的工作目录

    操作本地服务器

    lls   显示本地主机的列表

    lcd   切换本地的工作目录

    lpwd  查看本地目录信息

    上传下载文件参数

    get   --- 表示从远程服务器下载数据(单个文件)

    mget  --- 表示下载多个文件

    put   --- 表示从本地服务器上传数据(单个文件)

    mput  --- 表示上传多个文件

    查看帮助的方式:

    sftp> help       显示帮助信息

    1.11 ssh相关重点知识总结

     ssh协议:sshd---远程连接(sshd),sftp

     为加密的远程连接协议,相关软件有openssh.openssh---https。

     默认端口22

     协议版本1X和2.x,2.x更安全。了解SSH协议原理(ssh连接过程X

     服务端ssh远程连接服务,sftp服务。sshd守护进程,开机要自启动。

     ssh客户端包含ssh,scp,sftp命令。

     ssh安全验证方式:口令和密钥,这两种都是基于口令的,SSH密钥登录的原理。

     ssh服务安全优化,修改默认端口22,禁止root远程连接,禁止dns,SSH只监听内网IP

     ssh密钥对,公钥(publickey)在服务器端,比喻就是锁头,私钥(privatekey)在客户端,比喻就是钥匙。

     

     

     

    第2章 重点知识补充

    2.1 一个服务始终无法启动

    01.服务的查日志/系统日志

    02.检查服务端口有没有冲突

    2.2 【企业面试题】:给你一个端口如何命令行查出对应的服务是什么?

    测试服务端口有没有开启

    ss -lntup|grep 22

    netstat -lntup|grep -w "22"

    lsof -i:22

    grep  "\b22/\b" /etc/services

    nmap -p 22 172.16.1.41

    nc 172.16.1.41 22

    telnet 172.16.1.41 22

    2.2.1 【企业面试题】根据进程名查看对应的端口是什么?

    netstat/ss –lntup|grep 进程或服务名字

    2.3 ssh入侵案例说明

    被入侵实例http://phenixikki.blog.51cto.com/7572938/1546669

    IP何防止SSH登录入侵小结:

    1、用密钥登录,不用密码登陆

    2、牤牛阵法:解决SSH安全问题

    a.防火墙封闭SSH,指定源IP限制(局域网、信任公网)

    b.开启 SSH 只监听本地内网 IP ( ListenAddress 172.16.1.61 )

    3、尽量不给服务器外网ip

    4、最小化(软件安装-授权)

    5、给系统的重要文件或命令做一个指纹

    6、给他锁上 chattr +i +a

    第3章 扩展问题

    3.1 服务端端口号变化了,如何基于秘钥连接

    3.1.1 环境准备

    实验环境:

    [root@test ~]# cat /etc/redhat-release

    CentOS release 6.9 (Final)

    将一台服务器的ssh服务端口修改为63389

    [root@test ~]# netstat -lntup|grep sshd

    tcp        0      0 0.0.0.0:63389  0.0.0.0:*         LISTEN      5083/sshd          

    tcp        0      0 :::63389         :::*              LISTEN      5083/sshd   

    3.1.2 通过另外一台服务器创建并分发密钥

    第一个里程碑: 现创建密钥使用 ssh-keygen

    [root@backup ~]# ssh-keygen -t rsa

    Generating public/private rsa key pair.

    Enter file in which to save the key (/root/.ssh/id_rsa):   #指定密钥对的保存路径

    Enter passphrase (empty for no passphrase):        #为密钥对创建密码

    Enter same passphrase again:                          #确认为密钥对创建的密码

    Your identification has been saved in /root/.ssh/id_rsa.

    Your public key has been saved in /root/.ssh/id_rsa.pub.

    The key fingerprint is:

    72:48:65:1d:25:69:e1:4c:ae:2b:6f:a5:aa:70:96:1e root@backup

    The key's randomart image is:

    +--[ RSA 2048]----+     #2048表示加密的位数为2048位

    |        o.==.      |

    |       o =+.       |

    |      .  .+        |

    |     . . .         |

    |      o S           |

    |     . o ..        |

    |  . E . .o         |

    |   = . oo           |

    |    o..o.           |

    +-----------------+

    第二个里程碑:分发密钥,注意ssh的端口

    [root@backup ~]# ssh-copy-id  -i ~/.ssh/id_rsa.pub "-p63389 172.16.1.250"

    The authenticity of host '[172.16.1.250]:63389 ([172.16.1.250]:63389)' can't be established.

    RSA key fingerprint is d3:41:bb:0d:43:88:da:a3:2c:e8:36:91:11:c9:e4:9c.

    Are you sure you want to continue connecting (yes/no)? yes

    Warning: Permanently added '[172.16.1.250]:63389' (RSA) to the list of known hosts.

    root@172.16.1.250's password:

    Now try logging into the machine, with "ssh '-p63389 172.16.1.250'", and check in:

     

      .ssh/authorized_keys   #分发到对端服务器后进行改名

     

    to make sure we haven't added extra keys that you weren't expecting.

    说明:

       通过 man 手册找到密钥分发的命令格式。

       -i 参数指定 公钥文件的存放位置

    [use@]表示使用的用户,默认使用当前登陆的用户

    -p 指定端口,主要要在双引号之间(通过cat `which ssh-copy-id` 命令脚本内容得知)

    [root@backup ~]# man ssh-copy-id

    Formatting page, please wait...

    SSH-COPY-ID(1)                                                  SSH-COPY-ID(1)

    NAME

           ssh-copy-id  -  install  your  public  key in a remote machine's autho-

           rized_keys

    SYNOPSIS

    第三个里程碑: 测试密钥登陆

    [root@backup ~]# ssh 172.16.1.250 -p 63389

    Last login: Wed Oct 18 15:42:05 2017 from 10.0.0.41

    [root@test ~]#

    3.2 如何实现自动创建秘钥对,同时分发公钥(编写脚本实现)

    脚本内容:

    [root@m01 ~]# vim /server/scripts/piliang_fenfa.sh
      1 #!/bin/bash
      2
      3 #make key
      4 \rm -f /root/.ssh/id_dsa
      5 ssh-keygen -t dsa -f /root/.ssh/id_dsa -P "" -q
      6
      7 #fengfagongyao
      8 for ip in 8 31 41
      9 do
     10 echo ====fenfa key to host 172.16.1.$ip====
     11 sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no root@172.16.1.$ip"
     12 echo ===============fenfa end==============
     13 echo ""
     14 done

    脚本说明:

       ssh-keygen -t dsa -f /root/.ssh/id_dsa -P "" -q

       创建密钥,-f指定存放位置,-P 密钥加密的密码  -q 减少信息输出

    sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no root@172.16.1.$ip"

       这里需要安装一个软件 yum install sshpass -y 用来提供中户密码

    ssh-copy-id 命令来分发密钥 -i 指定密钥本地存放的路径

    -o StrictHostKeyChecking=no 在登陆其他服务器是不选择yes/no

    for ip in 8 31 41

       这里使用for循环来对ip地址进行变化。

    展开全文
  • SSH简介及两种远程登录的方法

    万次阅读 多人点赞 2018-11-12 16:33:45
    SSH的安全机制 SSH的安装 启动服务器的SSH服务 SSH两种级别的远程登录 SSH的高级应用 Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的安全网络协议。它是专为...

    目录

    SSH的安全机制

    SSH的安装

    启动服务器的SSH服务

    SSH两种级别的远程登录

    SSH的高级应用


    Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的安全网络协议。它是专为远程登录会话(甚至可以用Windows远程登录Linux服务器进行文件互传)和其他网络服务提供安全性的协议,可有效弥补网络中的漏洞。通过SSH,可以把所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。目前已经成为Linux系统的标准配置。

    SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文主要介绍OpenSSH免费开源实现在Ubuntu中的应用,如果要在Windows中使用SSH,需要使用另一个软件PuTTY。

    SSH的安全机制

    SSH之所以能够保证安全,原因在于它采用了非对称加密技术(RSA)加密了所有传输的数据。

    传统的网络服务程序,如FTP、Pop和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。

    但并不是说SSH就是绝对安全的,因为它本身提供两种级别的验证方法:

    第一种级别(基于口令的安全验证):只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人攻击”这种方式的攻击。

    第二种级别(基于密钥的安全验证):你必须为自己创建一对密钥,并把公钥放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密钥进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公钥,然后把它和你发送过来的公钥进行比较。如果两个密钥一致,服务器就用公钥加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私钥在本地解密再把它发送给服务器完成登录。与第一种级别相比,第二种级别不仅加密所有传输的数据,也不需要在网络上传送口令,因此安全性更高,可以有效防止中间人攻击。

    SSH的安装

    SSH分为客户端 openssh-client 和服务器 openssh-server,可以利用以下命令确认电脑上是否安装了客户端和服务器。

    dpkg -l | grep ssh

    如果只是想远程登陆别的机器只需要安装客户端(Ubuntu默认安装了客户端),如果要开放本机的SSH服务就需要安装服务器。

    sudo apt-get install openssh-client 
    sudo apt-get install openssh-server 

    启动服务器的SSH服务

    首先确认ssh-server是否已经启动了

    ps -e | grep ssh

    如图,sshd 表示ssh-server已经启动了。如果没有启动,可以使用如下命令启动:

    sudo /etc/init.d/ssh start 

    停止和重启ssh服务的命令如下:

    sudo /etc/init.d/ssh stop  #server停止ssh服务 
    sudo /etc/init.d/ssh restart  #server重启ssh服务
    

    接下来就可以进行使用客户机远程登录服务器了~

    SSH两种级别的远程登录

    一、口令登录

    口令登录非常简单,只需要一条命令,命令格式为: ssh 客户端用户名@服务器ip地址  eg:

    ssh ldz@192.168.0.1

    如果需要调用图形界面程序可以使用 -X 选项

    ssh -X ldz@192.168.0.1

    如果客户机的用户名和服务器的用户名相同,登录时可以省略用户名。

    ssh 192.168.0.1

    还要说明的是,SSH服务的默认端口是22,也就是说,如果你不设置端口的话登录请求会自动送到远程主机的22端口。我们可以使用 -p 选项来修改端口号,比如连接到服务器的1234端口:

    ssh -p 1234 ldz@192.168.0.1

    客户机必须要知道服务器的ip地址。可以在服务器端电脑上利用 ifconfig 命令查看该机的ip地址:

    如果是第一次登录远程主机,系统会给出下面提示:

    意思是,该远程主机的真实性无法确定,其公钥指纹为 SHA256:FFobshqrGOachj7Xp4LsJ9+xkNBlyyOe8ZIPl7K+qQI,确定想要继续连接吗?

    输入yes即可。这时系统会提示远程主机被添加到已知主机列表。

     

    然后会要求我们输入远程主机的密码,输入的密码正确就可以成功登录了。命令提示符会修改为远程主机的提示符,现在开始,终端中输入的命令都将在服务器中执行。

    我们可以通过 Ctrl+D 或者 exit 命令退出远程登录

     

    二、公钥登录

    每次登录远程主机都需要输入密码是很不方便的,如果想要省去这一步骤,可以利用密钥对进行连接,还可以提高安全性。

    1、在本机生成密钥对

    使用ssh-keygen命令生成密钥对:

    ssh-keygen -t rsa   #-t表示类型选项,这里采用rsa加密算法

    然后根据提示一步步的按enter键即可(其中有一个提示是要求设置私钥口令passphrase,不设置则为空,这里看心情吧,如果不放心私钥的安全可以设置一下),执行结束以后会在 /home/当前用户 目录下生成一个 .ssh 文件夹,其中包含私钥文件 id_rsa公钥文件 id_rsa.pub

    2、将公钥复制到远程主机中

    使用ssh-copy-id命令将公钥复制到远程主机。ssh-copy-id会将公钥写到远程主机的 ~/ .ssh/authorized_key 文件中

    ssh-copy-id ldz@192.168.0.1

    经过以上两个步骤,以后再登录这个远程主机就不用再输入密码了。

    cheers~

     

    SSH的高级应用

    使用远程主机不中断的跑程序

    当我们利用ssh在远程主机上跑程序的时候,只要关闭了终端就会中断ssh连接,然后远程主机上正在跑的程序或者服务就会自动停止运行。我们可以利用 nohup + 需要运行的程序 使运行的程序在切断ssh连接的时候仍然能够继续在远程主机中运行。nohup即no hang up(不挂起)。

    除此之外还有很多远程操作应用,包括 数据传输、端口操作(将不加密的网络连接绑定到ssh端口实现间接加密) 等等,可以参考柚子皮大神的博客:https://blog.csdn.net/pipisorry/article/details/52269785

     

     

     

    展开全文
  • SSH实战-传统三大框架精讲

    万人学习 2018-10-22 21:38:05
    传统的SSH教学,存在着很大的问题。尤其是Spring整合Struts2道理何在? Spring整合Hibernate是好是坏? 本教程采用完全案例教学模式,通过深刻剖析,提出了与传统模式完全不同的更佳解决方案!
  • linux下scp,ssh使用密钥

    2018-12-18 22:28:51
    今天运维部给了虚机做测试环境,都是使用公钥登录,使用密钥在windows下比较方便,但是虚机和虚机之间传输比较麻烦,我还得用我本机做中转。  发现scp有一个参数-i可以加载公钥,这个比较方便 ...

     今天运维部给了虚机做测试环境,都是使用公钥登录,使用密钥在windows下比较方便,但是虚机和虚机之间传输比较麻烦,我还得用我本机做中转。

      发现scp有一个参数-i可以加载公钥,这个比较方便

    但是执行时出现错误

     

    1. root@localhost:~# scp -i shopex_bakserver.bakserver otp_src_R14B03.tar.gz 1.1.1.1:/root/ 
    2. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 
    3. @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @ 
    4. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 
    5. Permissions 0644 for 'shopex_bakserver.bakserver' are too open
    6. It is recommended that your private key files are NOT accessible by others. 
    7. This private key will be ignored. 
    8. bad permissions: ignore key: shopex_bakserver.bakserver 
    9. Permission denied (publickey). 
    10. lost connection 

    出现这个错误主要是公钥的权限太大,把权限降为600即可

    chmod 600 shopex_bakserver.bakserver

     

     

    展开全文
  • ssh+scp实现文件免密钥传输

    千次阅读 2018-03-28 11:14:38
    一、实现ssh免密钥登录 1、创建一个普通用户,并设置密码; 2、切换到新建用户,创建一对密钥; 3、查看是否存在一对密钥,并发送密钥给客户端,由于数据流是服务端到客户端,所以服务端是私钥,客户端是公钥; ...
  • 目录 ssh ssh是什么 ssh安装 使用ssh登录远程主机 ...使用ssh执行单条指令 ...ssh ...ssh是什么 ...ssh (Secure SHell)简单说,ssh是一种网络协议,用于计算机...你可以通过 ssh 服务远程访问其他安装有 ssh 服务的主机,...
  • ssh&scp指定密钥

    2019-01-14 07:28:15
    scp时指定密钥: scp -P22 -r -i ~/.ssh/dongjing-shanghai.pem root@kiri_pro01:/data/backup/back_from_japan_kiriwoodinc_bak ./ ...ssh -p22 -i ~/.ssh/dongjing-shanghai.pem root@kiri_pro01...
  • scp指定key和端口传输文件

    千次阅读 2019-11-06 17:33:13
    scp -r -i huyw_private.huyw_private -P 8022 /usr/local/mysql/var/tg/stat_get.frm ...在当前机器执行 把test.php传输到144服务器上(权限错误的话:先把当前机器的ssh下的id_rsa.pub 复制到144的authorized_keys...
  • linux下安装SSH服务及使用详解

    万次阅读 2019-04-28 10:40:41
    linux下安装SSH服务及使用详解 ssh服务介绍说明 secure shell protocol简称SSH,是由IETF网络工作小组(network working group) 制定,在进行数据传输之前,SSH先对联级数据包通过加密技术进行加密处理,加密后在进行数据...
  • 什么是SSH 以及常见的ssh 功能

    万次阅读 多人点赞 2018-06-28 18:02:54
    什么是SSH?简单说,SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的时候...
  • ssh用法及命令

    万次阅读 多人点赞 2019-08-13 15:10:18
    什么是SSH? 简单说,SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的...
  • ssh详解

    千次阅读 2018-09-19 13:15:07
    本文对SSH连接验证机制进行了非常详细的分析,还详细介绍了ssh客户端工具的各种功能,相信能让各位对ssh有个全方位较透彻的了解,而不是仅仅只会用它来连接远程主机。 另外,作者翻译了ssh客户端命令的man文档,如...
  • 如何使用SSH登录远程服务器

    万次阅读 2016-09-05 19:54:27
    这时候就需要SSH了。搬瓦工自带SSH服务端,因此这里只需要配置客户端就可以了。默认配置Windows下有很多SSH工具。在这里我是用的是Putty。如果安装了Git并配置使用Putty的话,就不需要另外在安装Putty了。使用SSH...
  • ssh-keygen的使用方法

    万次阅读 2011-04-21 15:30:00
    采用了数字签名RSA或者DSA来完成这个操作2、模型分析假设 A (192.168.20.59)为客户机器,B(192.168.20.60)为目标机; ...2、ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_r
  • linux安装ssh和开启 ssh服务

    万次阅读 多人点赞 2017-08-08 20:37:33
    1.查看ssh服务的状态 输入以下命令: sudo service sshd status 如果出现 Loaded: error (Reason: No such file or directory) 提示的话,说名没有安装ssh服务,按照第二步:安装ssh服务。 如果...
  • ubuntu开启SSH服务远程登录

    万次阅读 多人点赞 2017-02-10 21:18:48
    ssh–secure shell,提供安全的远程登录。从事嵌入式开发搭建linux开发环境中,ssh的服务的安装是其中必不可少的一步。ssh方便一个开发小组中人员登录一台服务器,从事代码的编写、编译、运行。方便代码的共享及管理...
  • SSH远程登录和SSH免密码登录

    万次阅读 多人点赞 2018-09-07 12:12:00
    SSH是一种通讯协议,可以实现远程安全登录。可以通过如putty、MobaXterm等工具通过ssh安全登录到虚拟机进行操作。 Openssh:ssh远程安全登录的开源实现(软件)。 一、SSH远程登录的原理(基于口令) 1、客户端向...
  • ssh-keygen生成git ssh密钥

    万次阅读 2017-02-07 18:21:02
    SSH是建立在应用层和传输层基础上的安全协议,其目的是专为远程登录会话和其他网络服务提供安全性的保障,用过SSH远程登录的人都比较熟悉,可以认为SSH是一种安全的Shell。SSH登录是需要用户名和密码的,要实现无...
1 2 3 4 5 ... 20
收藏数 543,454
精华内容 217,381
关键字:

ssh