zoukankan      html  css  js  c++  java
  • linux ssh服务实战篇(一)

    ssh服务在上一篇中做了简要介绍,本节进入实战篇(一)

     SSH协议默认开放的是TCP 22号端口

    前一节讲到SSH首次启动时,由于没有公钥和私钥的存在,在启动时,会生成本机的公钥和私钥数据。这里模拟一个SSH首次启动的场景,即手动删除/etc/ssh/下的公钥和私钥文件,重启SSH服务时,观察公钥和私钥已经生成。

     注意:在系统中一般默认安装了相关的软件,包括产生密码协议的OpenSSL软件和openssh软件

     SSH提供了两个功能:

      1、提供shell给我们使用;

      2、提供一个比较安全的FTP-server

    SSH连接远程设备相关命令:

    ssh   [-f]    [-o 参数]     [-p 端口]      [用户账号@]IP        [指令]

      -f:需要配合后面的[指令],作用是不登陆远程设备,仅仅发送一个指令过去

    -o 参数:

      ConnectTimeout=时间(单位:秒)   表示SSH连接等待的时间,设置参数可以减少连接等待的时间

       StrictHostKeyChechking=yes|ask|no    默认参数是ask,主要是远程主机对公钥数据进行核查。首次连接远程主机之后,远程主机会把客户端的公钥存放在~/.ssh/known_hosts;再次连接远程主机的时候,远程主机对比本次的公钥与存放的公钥数据是否一致。若要让公钥主动加入~/.ssh/known_hosts,设定no即可。

    -p :远程主机SSH服务开放的端口(默认开放22端口)

    [指令]:不登入远程主机,直接发送命令过去。

      如果执行命令时间较长,会发现会卡在输入密码的这个阶段,这是因为命令还没有执行完,只有等待命令执行完毕后才会断开连接,这个时候配合-f命令使用

      注意:一般登陆远程设备,都会按照 ssh -p 端口  用户账号@ip 的格式。如果不写账号,会以本端的账号来尝试登陆远程设备。例如:A服务器登陆B服务器,A服务器现在是test普通账号,直接ssh B服务器ip,那么会用test账号登陆B,B中如果没有此账号,则会报错。

      登陆远程设备时,RSA这行会出现公钥指纹码,如果没有问题,输入yes后会主动写入公钥记录文件~/.ssh/known_hosts中

     服务器公钥记录文件:~/.ssh/known_hosts

    当进行远程服务器连接时,本端会将对端发送过来的公钥去~/.ssh/known_hosts进行比对:

      1、若没有该公钥记录,则ask用户是否需要记录,记录则写入~/.ssh/known_hosts文件;不记录则不写入该文件,登陆结束退出

      2、若收到的公钥已经记录在案,则比对二者是否相同,若相同则进行后面的登陆操作;若不相同,则出现告警信息,且退出登陆。

    模拟场景:假设A服务器之前登陆过B服务器,但是B服务器系统重新安装并启动SSH服务,造成B服务器的公钥发生改变,会出现什么样的后果以及如何处理呢?

      1、在B服务器上删除公钥和私钥文件,并重启SSH服务

       2、A服务器重新登录B服务器

      A登录时提示,有可能是中间人攻击,也可能是远程主机的公钥改变。检查/roo/.ssh/known_hosts文件第一行的公钥文件,已经发生改变。

    此时还想登录B的话,删除/root/.ssh/known_hosts文件的第一行内容即可

  • 相关阅读:
    RAID技术
    Mysql的用户基本操作
    LNMP之Php的安装配置
    java 实现图片拼接
    java 实现Serv-U FTP 和 SFTP 上传 下载
    Image合并添加文字内容
    AOP切面用于系统日志
    网页评论实现
    java web 实体类生成
    java接口调试思想
  • 原文地址:https://www.cnblogs.com/wujizhang/p/11657685.html
Copyright © 2011-2022 走看看