[Linux]经典面试题 - 服务管理 - SSH


参考:

一、SSH概述

1.1 SSH原理

  • SSH以非对称加密实现身份验证。
  • SSH身份验证途径有两种:
    • 第一种:自动生成密钥对,加密网络连接,然后使用密码认证登陆;
    • 第二种:手动生成密钥对,公钥需要放在待访问服务器上,私钥自行保管,在访问时需要用私钥进行解密;(整个认证过程中私钥始终在本机,不会传输至网络)
  • SSH服务端只验证访问者是否拥有与公钥匹配的私钥,只要接受公钥并且密钥匹配服务器就会放行,那就意味着如果接受了攻击者的公钥,那么SSH服务端将会把攻击者也视作合法用户。

1.2 密钥管理

  • 类Unix系统中,许可登陆的公钥通常保存在用户家目录下的 ~/.ssh/authorized_keys文件中。
  • 当远程机器持有公钥,本地持有相匹配的私钥,那么就可以实现免密登陆。

二、SSH安全验证

2.1 示例拓扑

image-20210627224041288

2.2 密码登陆

第一种级别,基于密码的安全验证,通过账号密码就可以登录到远程主机,而且传输的数据会被加密。但是若有人冒充了对端服务器,就会被“中间人”攻击。

[root@vm1 ~]# ssh root@192.168.122.200
root@192.168.122.200's password: 
Last login: Sun Jun 27 22:42:29 2021 from 192.168.122.100

2.3 密钥登陆

第二种级别,基于密钥的安全验证,需要依靠密钥,由客户端创建一对密钥,并把公钥放在需要访问的服务器上。

  1. 通过命令ssh-keygen生成密钥:

    [root@vm1 ~]# ssh-keygen 
    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:
    SHA256:Z91byIEjVajXDH53eyFsIXxi27Mx1/Bw12P0AYTYZM0 root@vm1
    The key's randomart image is:
    +---[RSA 3072]----+
    |          =o*=+o.|
    |         ..OoEoo*|
    |          ooX++==|
    |          .+o%+==|
    |        S o.o.@.=|
    |         o   . +.|
    |              . .|
    |                 |
    |                 |
    +----[SHA256]-----+
    [root@vm1 ~]# ll ~/.ssh/
    total 12
    -rw-------. 1 root root 2590 Jun 27 22:46 id_rsa
    -rw-r--r--. 1 root root  562 Jun 27 22:46 id_rsa.pub
    -rw-r--r--. 1 root root  177 Jun 27 22:00 known_hosts
    

    ~/.ssh/目录下,会生成几个文件:

    • id_rsa:私钥。
    • id_rsa.pub:公钥。
    • known_hosts:访问的记录,已知hosts。
  2. 通过命令ssh-copy-id发送公钥到要访问的服务器上(vm1的公钥发送到vm2):

    [root@vm1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.122.200
    /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    root@192.168.122.200's password: 
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh 'root@192.168.122.200'"
    and check to make sure that only the key(s) you wanted were added.
    
  3. 测试免密登陆:

    [root@vm1 ~]# ssh root@192.168.122.200
    Last login: Sun Jun 27 22:45:30 2021 from 192.168.122.100
    [root@vm2 ~]# 
    

    此时,vm1已经可以正常访问vm2。

  4. 此时vm2上的~/.ssh/authorized_keys记录了vm1的id_rsa.pub(vm1的公钥):

    [root@vm2 /]# cat ~/.ssh/authorized_keys 
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC+Msefk9KeGUHZsI4uudhsUHrB8UbB1MCF5sKKb7957iLUUseScwbja+nTk/+hcTix1WJa0maypv5MA+xJb0YlSSNeu4z9kO0rwu0s5vma67mKbwlngv0v6lpsRVpB4eU/E8x/uSCKE/P34wClPaxZoBfXLmSd3/mohiUdWUEI+NkN93KtArBRABgMT/iYUOb74o9G2N6PEMrdC3g2NaIzhOp3JSEIYIPS3IILp3refCxt+YgFy4yQN0S8E7sPdUEBnvT+KDz+KRJ1UQNeIdV9LOERnuVQB0w6pRI4N866teJdLHZxaPMbW3GQjHUP3ectkCBmNr30yNbiQFRjQ2gIk7dtSrfDuusb3cCVODU+YWoTroglATJNjJ4C3J+QUbeCoqUZDYcnONs4CD6Wwe1aqtwm1vOkFLA65vu5rFZPueeCdGzDpPUOOYXxFvIX3rp4SEGLFbcHrqmPOcLPkw7Ysk4igd+zwKquOP5ysOH87MK6jJwlsu8Qkr3coUTWA20= root@vm1
    

    vm1的ip_rsa.pub(vm1的公钥)如下:

    [root@vm1 ~]# cat ~/.ssh/id_rsa.pub 
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC+Msefk9KeGUHZsI4uudhsUHrB8UbB1MCF5sKKb7957iLUUseScwbja+nTk/+hcTix1WJa0maypv5MA+xJb0YlSSNeu4z9kO0rwu0s5vma67mKbwlngv0v6lpsRVpB4eU/E8x/uSCKE/P34wClPaxZoBfXLmSd3/mohiUdWUEI+NkN93KtArBRABgMT/iYUOb74o9G2N6PEMrdC3g2NaIzhOp3JSEIYIPS3IILp3refCxt+YgFy4yQN0S8E7sPdUEBnvT+KDz+KRJ1UQNeIdV9LOERnuVQB0w6pRI4N866teJdLHZxaPMbW3GQjHUP3ectkCBmNr30yNbiQFRjQ2gIk7dtSrfDuusb3cCVODU+YWoTroglATJNjJ4C3J+QUbeCoqUZDYcnONs4CD6Wwe1aqtwm1vOkFLA65vu5rFZPueeCdGzDpPUOOYXxFvIX3rp4SEGLFbcHrqmPOcLPkw7Ysk4igd+zwKquOP5ysOH87MK6jJwlsu8Qkr3coUTWA20= root@vm1
    

三、SSH配置文件

3.1 SSH的配置文件路径

SSH文件存放在:/etc/ssh/sshd_config

3.2 SSH的登陆端口和监听设置

配置文件:/etc/ssh/sshd_config,第17行。

Port 22						#ssh服务监听端口
ListenAddress 0.0.0.0		#ssh服务默认监听IP地址

3.3 SSH的登陆用户设置

配置文件:/etc/ssh/sshd_config,第46行。

PermitRootLogin yes			#是否允许使用root用户ssh登陆

3.4 SSH的登陆超时设置

配置文件:/etc/ssh/sshd_config,第122行。

ClientAliveInterval 60		#每60秒,服务端向客户端询问是否在线,不在就断开连接。

3.5 SSH登陆失败尝试次数

配置文件:/etc/ssh/sshd_config

MaxAuthTries 6				#设置客户端登陆失败尝试次数为6次
posted @ 2021-06-27 23:37  SkyBiuBiu  阅读(443)  评论(1编辑  收藏  举报