远程访问及控制

文章目录

  • 远程访问及控制
    • 一、SSH远程管理
      • 1、SSH(Secure Shell)协议定义
      • 2、SSH的优点
      • 3、OpenSSHell
    • 二、配置OpenSSH服务端
      • 1、sshd_config配置文件的常用选项
      • 2、sshd服务支持的两种验证方式
        • 2.1 密码验证
        • 2.2 秘钥对验证
    • 三、SSH客户端程序的使用
      • 1、基本用法
        • 1.1 直接连接
        • 1.2 连接指定用户
        • 1.3 连接指定端口号
        • 1.4 跳板机
      • 2、黑白名单
      • 3、修改默认端口号
      • 4、禁止root用户登录
      • 5、ssh服务的最佳实践
    • 四、使用密钥对免交互验证登录
      • 免密的登录方式

远程访问及控制

一、SSH远程管理

1、SSH(Secure Shell)协议定义

  • 是一种安全通道协议,主要用来实现字符界面的远程,远程复制等功能
  • SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。因此SSH协议具有很好的安全性。
  • TELNET协议:不加密,仅适用于测试

2、SSH的优点

  • 数据传输时是加密的,可以防止信息泄露

  • 数据传输时时压缩的,可以提高传输速度

    客户端:finalshell、Xshell、mobaxterm、CRT、Putty

    服务端:OpenSSH

3、OpenSSHell

  • OpenSSH 是实现SSH协议的开源软件项目,适用于各种UNIX、Linux操作系统

  • CentOS 7系统默认以安装openssh县官软件包,并已将 sshd 服务添加为 开机自启动

  • 执行“systemctl start sshd”命令即可启动 sshd服务

  • sshd 服务使用的默认端口号为22

  • sshd 服务的默认配置文件为/etc/ssh/sshd_config

    服务名称:sshd

    服务端主程序:/usr/sbin/sshd

    服务端默认配置文件:/etc/ssh/sshd_config

远程访问及控制_第1张图片

注:ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于前者是针对客户端的配置文件,后者则是针对服务端的配置文件

二、配置OpenSSH服务端

1、sshd_config配置文件的常用选项


vim /etc/ssh/sshd_config    #修改配置文件

Port 22      #  监听端口为22

ListenAddress 0.0.0.0       # 监听地址为任意网段,也可以指定OpenSSH服务器的具体IP
LoginGraceTime 2m       # 登录验证时间为2分钟
PermitRootLogin no      # 禁止root用户登录

MaxAuthTries 6       #  最大重试次数为 6

PermitEmptyPasswords no        # 禁止空密码用户登录

UseDNS no       # 禁用 DNS 反向解析,以提高服务器的响应速度

AllowUsers zhangsan lisi [email protected]#  多个用户以空格分隔    # 只允许zhangsan、lisi、wangwu用户登录,且其中wangwu用户仅能够从IP地址为192.168.10.12的主机远程登录

DenyUsers zhangsan     # 禁止某些用户登录,用法于AllowUsers 类似(注意不要同时使用)

远程访问及控制_第2张图片

2、sshd服务支持的两种验证方式

2.1 密码验证
  • 对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解
2.2 秘钥对验证
  • 要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一一对密钥文件 (公钥、私钥), 然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证。能增强安全性,且可以免交互登录。

当密码验证、密钥对验证都启用时, 服务器将优先使用密钥对验证。 可根据实际情况设置验证方式。

三、SSH客户端程序的使用

1、基本用法

1.1 直接连接
  • 命令格式:ssh ip地址

远程访问及控制_第3张图片

当用户第一次登录SSH服务器时,必须接受服务器发来的ECDSA密钥(根据提示输入"yes")后才能继续验证。接收的密钥信息将保存到~/.ssh/known_hosts 文件中。 密码验证成功以后,即可登录目标服务器的命令行环境中了。同意之后,下次登录就会自动获取服务端的公钥

远程访问及控制_第4张图片

1.2 连接指定用户
  • 命令格式:

    ssh 用户名@ip地址

    ssh 用户名 ip地址

远程访问及控制_第5张图片

1.3 连接指定端口号
  • 命令格式:ssh ip地址 -p 端口号

sshd服务的默认端口号是 22,如果是其他端口号,需要 -p 来指定端口

①、在 vim /etc/ssh/sshd_config配置文件下修改端口号,修改完配置之后需要重启服务,使配置文件生效

远程访问及控制_第6张图片

②、然后去远程连接

image-20240115161550694

1.4 跳板机
  • 命令格式: ssh -t ip地址 ssh -t ip地址 ssh -t ip地址 …

远程访问及控制_第7张图片

2、黑白名单

  • 白名单:默认拒绝所有,只有白名单上的用户才可以访问
  • 黑名单:默认允许所有,只有黑名单上的用户不允许访问

修改服务端的服务配置文件:vim /etc/ssh/sshd_config

远程访问及控制_第8张图片

远程访问及控制_第9张图片

远程访问及控制_第10张图片

3、修改默认端口号

修改服务端的服务配置文件:vim /etc/ssh/sshd_config

远程访问及控制_第11张图片

4、禁止root用户登录

远程访问及控制_第12张图片

远程访问及控制_第13张图片

  • 修改pam认证模块,使普通用户登录后不能切换到root用户

远程访问及控制_第14张图片

远程访问及控制_第15张图片

5、ssh服务的最佳实践

  1. 建议使用非默认端口 22

  2. 限制可登录用户白名单

  3. 设定空闲会话超时时长

  4. 利用防火墙设置ssh访问策略

  5. 仅监听特定的IP地址 公网 内网

  6. 基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs

  7. 使用基于密钥的认证

  8. 禁止使用空密码

  9. 禁止root用户直接登录

  10. 限制ssh的访问频度和并发在线数

  11. 经常分析日志分离

四、使用密钥对免交互验证登录

免密的登录方式

  1. 首先在客户端生成一对密钥(ssh-keygen)

  2. 并将客户端的公钥ssh-copy-id 拷贝到服务端

  3. 当客户端再次发送一个连接请求,包括ip、用户名

  4. 服务端得到客户端的请求后,会到authorized_keys()中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:kgc

  5. 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端

  6. 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端

  7. 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

##192.168.10.11地址的设备的操作步骤:
ssh-keygen
#生成密钥对
Generating public/private rsa key pair.
#默认使用rsa算法
Enter file in which to save the key (/root/.ssh/id_rsa):
#密钥存放的文件位置是/root/.ssh/id_rsa
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
#覆盖
Enter passphrase (empty for no passphrase):
#设置密钥文件密码,不少于5位
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:xpW9Zo9EqbSTaLGCLIU7cdu+DtXSSPQMwdVN+hSGQEU [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|     .+++=E++    |
|   . ..+  o=.o   |
|  o o . + = =    |
|   * = = * B .   |
|  + + * S = *    |
|   o o =   = o   |
|    . .     . .  |
|     . .         |
|     .o          |
+----[SHA256]-----+
#提供了密钥的随机艺术图像,是一种可视化的方式来显示密钥的指纹信息

cd .ssh/
#切换目录

ls
id_rsa  id_rsa.pub  known_hosts
#查看ssh下生成的文件

ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.10.12
#将密钥文件传给192.168.10.12地址
/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
[email protected]'s password:
#此处输入目标地址192.168.10.12用户的登录密码

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '192.168.10.12'"
and check to make sure that only the key(s) you wanted were added.

##192.168.10.12地址的设备的操作步骤:
cd .ssh/
#切换目录

ls
authorized_keys  known_hosts
#查看传过来的密钥文件

##验证:
[root@localhost .ssh]#ssh 192.168.10.12
Last login: Mon Jan 15 08:20:10 2024 from 192.168.10.1
[root@liuyanfen12 ~]#
#此时远程登录,不需要验证密码

远程访问及控制_第16张图片

远程访问及控制_第17张图片

远程访问及控制_第18张图片

  • 验证

image-20240115160832265

你可能感兴趣的:(linux,运维)