Linux 基础学习篇9(网络服务ssh篇)

(一)openssh-server               

1.openssh-server

    服务(系统或网络):常驻在内存中的进程。

    daemon(守护神):实现服务的程序。举例:实现循环型工作调度服务的程序(daemon)为crond。有时,daemon与service不需要分太清。

2.客户端连接方式
   ssh    远程主机用户@远程主机ip
[[email protected] ~]# ssh [email protected]
The authenticity of host '172.25.0.11 (172.25.0.11)' can't be established.
ECDSA key fingerprint is eb:24:0e:07:96:26:b1:04:c2:37:0c:78:2d:bc:b0:08.
Are you sure you want to continue connecting (yes/no)? yes    ##连接陌生主机时需要建立认证关系
Warning: Permanently added '172.25.0.11' (ECDSA) to the list of known hosts.
[email protected]'s password:                 ##远程用户密码
Last login: Mon Oct  3 03:13:47 2016
[[email protected] ~]#                    ##登陆成功

实验1:

       实验1前的准备:因为要同时开启两台虚拟机,系统会变慢,所以要改两台虚拟机内存才可以。

修改如下:

Linux 基础学习篇9(网络服务ssh篇)Linux 基础学习篇9(网络服务ssh篇)

修改内存(客户端同理):

Linux 基础学习篇9(网络服务ssh篇)

      @为了便于识别两个虚拟机,现将两台虚拟机中行提示符里面的主机名进行修改。desktop虚拟机主机名设置为client,server虚拟机主机名设置为server。(脑海中一定要有客户端服务端模型)

Linux 基础学习篇9(网络服务ssh篇)

Linux 基础学习篇9(网络服务ssh篇)

      @在两台虚拟机上均执行删除/root/.ssh/命令(为下面生成公钥私钥做准备的一步)
      @在两台虚拟机上均执行修改ip即nm-connection-editor命令(client:172.25.44.10.server:172.25.44.11)

       @尝试连接(客户端连接服务端)

Linux 基础学习篇9(网络服务ssh篇)  

 ssh 远程主机用户@远程主机ip -X                ##调用远程主机图形工具

实验2:

Linux 基础学习篇9(网络服务ssh篇)

  ssh     远程主机用户@远程主机ip        command        ##直接在远程主机运行某条命令

实验3:

Linux 基础学习篇9(网络服务ssh篇)

3.sshkey加密:

    (1)生成公钥私钥
[[email protected] ~]# ssh-******         ##生成公钥私钥工具
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):[enter]     ##加密字符保存文件(建议用默认
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):         [enter]        ##**密码,必须>4个字符
Enter same passphrase again:                 [enter]        ##确认密码
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:                        
ab:3c:73:2e:c8:0b:75:c8:39:3a:46:a2:22:34:84:81 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|o                |
|E.               |
|..               |
|.  . o           |
|.o. * . S        |
|oo.o o   .       |
|+ =. .  .        |
|o. oo.+..        |
|    ..o*.        |
+-----------------+
  [[email protected] ~]# ls /root/.ssh/
  id_rsa  id_rsa.pub
  id_rsa                       ##私钥,就是钥匙
  id_rsa.pub                ##公钥,就是锁

 实验4:

    我们在服务端设置公钥,私钥。 

  Linux 基础学习篇9(网络服务ssh篇)

设置完成后接下来我们可以看看文件到底生成否:

Linux 基础学习篇9(网络服务ssh篇)

  (2)添加key认证方式
 [[email protected] ~]# ssh-copy-id  -i  /root/.ssh/id_rsa.pub   [email protected]
ssh-copy-id        ##添加key认证方式的工具
-i                        ##指定加密key文件
/root/.ssh/id_rsa.pub              ##加密key
root                                       ##加密用户为root
172.25.0.11                           ##被加密主机ip

 实验5:

Linux 基础学习篇9(网络服务ssh篇)

当我们添加完key认证方式后,被加密的主机用户对应文件夹会多两个文件,我们查看下:

Linux 基础学习篇9(网络服务ssh篇)

   (3)分发钥匙给client主机
[[email protected] ~]# scp /root/.ssh/id_rsa [email protected]:/root/.ssh/

Linux 基础学习篇9(网络服务ssh篇)


服务主机给客户主机分发钥匙后,在客户主机上的/root/.ssh/目录下就会多出两个文件(为了实验效果,前面已经删除掉该目录下的所有文件及目录),如下图所示:

Linux 基础学习篇9(网络服务ssh篇)

此时,因为客户端有钥匙(服务端给的钥匙文件),所以可以不用输入密码即可连接!

Linux 基础学习篇9(网络服务ssh篇)

4提升openssh的安全级别

   (1)openssh-server配置文件
           /etc/ssh/sshd_config
  78 PasswordAuthentication  yes|no        ##是否开启用户密码认  证,yes为支持no为关闭
  48 PermitRootLogin  yes|no            ##是否允许超级用户登陆
 实验6:

       实验前提:进行该实验之前先把客户端主机上的钥匙文件删掉。

Linux 基础学习篇9(网络服务ssh篇)

出现的问题:第一次删除id rsa文件,没删掉。

解决:你得先进入相应文件夹,不能在主文件夹下删除。

    (1)在服务端 vim进入/etc/ssh/sshd_config

   设置是否开启用户密码认证,yes为支持no为关闭,此时设置为no,如下:Linux 基础学习篇9(网络服务ssh篇)

     (2)此时在客户主机连接服务主机,观察是否可以密码连接:

Linux 基础学习篇9(网络服务ssh篇)

   实验失败!

   原因及解决:sshd.service是服务,记得每次修改完配置文件都要重启服务!如下所示:

Linux 基础学习篇9(网络服务ssh篇)

   试验成功!客户主机连接服务主机就需要输入密码,结果发现无法连接

Linux 基础学习篇9(网络服务ssh篇)

   (做完测试记得把钥匙文件再发送给客户主机,以便下次实验进行)。

  49 AllowUsers  student westos            ##用户白名单,只有在名单中出现的用户可以使用sshd建立shell
  50 DenyUsers westos                ##用户黑名单

注意:在服务端设置用户黑白名单时,意思是客户端不可以/可以访问服务器端的对应名单用户!

实验7:

Linux 基础学习篇9(网络服务ssh篇)

当设置黑名单后,客户端无法访问服务端的student用户:

      

 Linux 基础学习篇9(网络服务ssh篇)

    (2)控制ssh客户端访问
   vim /etc/hosts.deny
         @ sshd:ALL        ##拒绝所有人链接sshd服务
Linux 基础学习篇9(网络服务ssh篇)
   vim /etc/hosts.allow
          @ sshd:172.25.254.250    ##允许250主机链接sshd
          @ sshd:172.25.254.250, 172.25.254.180    ##允许250和180链接
          @ sshd:ALL EXCEPT 172.25.254.200        ##只不允许200链接sshd


  (3)ssh登陆提示修改
         vim /etc/motd        ##显示登陆后字符
         hello world        ##在登陆后就会显示这个字符

Linux 基础学习篇9(网络服务ssh篇)

改完配置文件后,运行结果如下:

Linux 基础学习篇9(网络服务ssh篇)

##end##