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文件的第一行内容即可

posted @ 2019-10-12 17:57  笨小孩爱喝爽歪歪  阅读(195)  评论(0编辑  收藏  举报