• [Linux] ssh远程访问及控制


    一、ssh介绍

    1.1 SSH简介

    SSH(Secure Shell)是一种安全通道协议,主要用于实现远程登录、远程复制等功能的字符接口。SSH 协议包括用户在登录时输入的用户密码、双方之间的通信。 加密数据传输,SSH 是一种建立在应用层和传输层上的安全协议。SSH 是一种建立在应用层和传输层上的安全协议。数据经过压缩,以提高传输速度。

    SSH 启用的端口为:TCP22号端口

    1.2 SSH的优势

    SSH 是一种可靠的协议,旨在为远程登录会话和其他网络服务提供安全保障。正确使用 ssh 可以弥补网络漏洞。除 ssh 程序外,客户端还包括 scp(远程复制)、slogin(远程登录)和 sftp(安全文件传输)等应用程序。

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

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

    1.3 常用的SSH软件的介绍 

     SSH客户端:putty(开源工具),xshell,CRT

    SSH服务端:openSSH(centos7系统默认安装)

    centos7  ssh服务启动自检命令:  systemctl is-enabled    sshd

    1.4 sshd_ config常用选项设置

    1. 1 vim /etc/ssh/sshd_config #服务端配置文件
    2. 2 #Port 22 #监端口为22
    3. 3 #AddressFamily any #监听地址为任意网卡,也可以指定Openssh服务器的具体ip
    4. 4 #LoginGraceTime 2m #登录验证时间为2分钟
    5. 5 #PermitRootLogin yes #禁止root用户登录
    6. 6 #MaxAuthTries 6 #最大重试次数为 6
    7. 7 #PermitEmptyPasswords no #禁止空密码用户登录
    8. 8 #UseDNS no #禁用DNS反向解析,以提高服务器的响应速度
    9. 9 ----------------------------------------------------------------------------------
    10. 10 配置允许和禁止用户登录:加@表示限制ip,注意允许和禁止不要同时使用!!
    11. 11 AllowUsers zhangsan #允许zhangsan登录(多个用户以空格间隔)
    12. 12 AllowUsers zhangsan@192.168.80.80 #只允许zhangsan通过192.168.80.80登录
    13. 13 DenyUsers lisi #禁止lisi登录

    1.5 SSH端口、配置文件

            sshd服务默认使用TCP的22端口。

            sshd服务的默认配置文件是==/etc/ssh/sshd_config==。

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

    1. [root@CXK ~]# netstat -lntp #查看服务使用的端口号
    2. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1074/sshd
    3. 3052/sshd: root@pts
    4. [root@clr ~]# ss -lntp
    5. (("dnsmasq",pid=1457,fd=6))
    6. LISTEN 0 128 *:22 *:* users:(("sshd",pid=1074,fd=3))
    7. LISTEN 0 128 127.0.0.1:631 *:* users:

    1.6 SSH的密钥登录

    密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥。而ssh密钥就是一种非对称性的密钥。 

     ssh 远程访问控制中不仅仅可以使用用户密码登录,还可以通过 密钥进行登录。而密钥登录的产生是通过客户端与服务端进行一系列的操作过程产生的。

     密钥登录的过程:

    1. ssh客户端通过ssh-keygen生成自己的公钥和私钥,将公钥发送给ssh服务端,并且放在指定的位置。

     2.公钥发送完毕后。ssh客户端再向ssh 服务端进行登录请求。

    3.ssh服务端收到ssh客户端的登录请求后,ssh服务端用对应的公钥加密一些随机数返回给ssh客户端。

    4.ssh客户端收加密的随机数后使用私钥对其进行解密,再将解密的结果发送给ssh服务端进行验证。

    5. ssh服务端接收到ssh客户端发送过来的解密数据,将其与原数据进行比对,保持一致则允许用户进行登录

    二、SSH的应用

    2.1 SSH配置文件信息

    在Linux中实现ssh,是通过openSSH的sshd服务提供的。

    2.1.1存放ssh服务端的配置文件

    /etc/ssh/sshd_config

    1. vim /etc/ssh/sshd_config
    2. 常用选项配置
    3. #Port 22
    4. #ListenAddress 0.0.0.0

    常用配置项: 

    1. #LoginGraceTime 2m 登录验证时间为两分钟
    2. #PermitRootLogin yes 允许root用户登录(安全考虑,这里可以设置为no,禁止root用户登录)
    3. #MaxAuthTries 6 最大重试的次数为6
    4. PasswordAuthentication yes 允许空密码用户登录
    5. UseDNS no 禁止DNS反向解析,提高服务器的响应速度
    2.1.2 存放ssh客户端的配置文件

     /etc/ssh/ssh_config   (该配置基本默认保持不变,就可以了)

    2.2  ssh在Linux中的密码登录

     ssh [远程主机用户名]@[远程服务器主机名或IP地址] [-p port]

    1. [root@CXK ~]# ssh 192.168.136.110
    2. exit 退出当前用户

    [root@CXK~]# ssh -p 22  Chen@192.168.136.100
    

    2.3  利用ssh协议传输文件和获取文件

     ssh scp sftp 都是默认使用ssh协议,端口为 tcp 22

     2.4 修改默认端口

    1. #修改默认端口
    2. [root CXK1 ~] vim /etc/ssh/sshd_config
    3. #17 行修改自己默认的端口
    4. 17 Port 2272

    2.4 禁止root用户登录  

    1. [root CXK1 ~] vim /etc/ssh/sshd_config
    2. #开启38 行 并改为 no,默认注释并写的yes
    3. 38 PermitRootLogin no
    4. #注意虽然阻止了root 但是普通用户可以使用su

    2.5 白名单黑名单列表  

    1. [root IKUN2 ~] vim /etc/ssh/sshd_config
    2. AllowUsers Chen@192.168.136.110 lisi #允许所有有的主机访问我的lisi用户
    3. #只允许Chen从192.168.136.110上访问

    1. vim /etc/ssh/sshd_config
    2. DenyUsers ww

    三、SSH通过密钥免密登录 

    第一步:首先在客户端生成密钥

    第二步:把密钥文件复制给另一个客户端

    1. [root@localhost ~]# cd .ssh/
    2. [root@localhost .ssh]# ls
    3. id_rsa id_rsa.pub
    4. [root@localhost .ssh]# ssh-copy-id -i id_rsa.pub 192.168.136.110
    5. /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
    6. The authenticity of host '192.168.136.110 (192.168.136.110)' can't be established.
    7. ECDSA key fingerprint is SHA256:3HPTJDS6kShhYh+uHMJZlxYBdgwW1iDZfo1ogM6zo64.
    8. ECDSA key fingerprint is MD5:6a:89:27:b4:4f:23:9c:76:07:a0:91:d3:7b:42:dd:5a.
    9. Are you sure you want to continue connecting (yes/no)? yes
    10. /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    11. /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
    12. root@192.168.136.110's password:
    13. Number of key(s) added: 1
    14. Now try logging into the machine, with: "ssh '192.168.136.110'"
    15. and check to make sure that only the key(s) you wanted were added.
    16. [root@localhost .ssh]# ssh 192.168.136.110
    17. Last login: Wed Nov 15 00:46:47 2023 from 192.168.136.66
    18. [root CXK ~]

    第三步:在令一台(或者多台) 客户端同样操作

    66那台主机不知怎么回事设置不了这里用的是110和120两台,操作是一样的

    第四步:验证结果 

    110主机

    120主机

    总结: 

    1. 熟悉 ssh 密钥生成过程,对 ssh 访问进行加密,以符合更安全的远程控制标准;

    2. 部署新服务器后,取消 root 用户的远程访问权限,以提高安全性。

    3. 使用 ssh 中更有效的传输获取功能。

  • 相关阅读:
    大数据项目之电商数仓DataX、DataX简介、DataX支持的数据源、DataX架构原理、DataX部署
    证书-ssl
    计算机毕业设计(附源码)python新生报到管理系统
    羽夏 MakeFile 简明教程
    庄懂的TA笔记(九)<菲涅尔 + MatCap + CubeMap>
    Handler入门
    思科-路由器的命令
    OpenWRT设置自动获取IP,作为二级路由器
    Linux学习-22-源码包安装、卸载和升级
    `英语` 2022/8/18
  • 原文地址:https://blog.csdn.net/Cnm_147258/article/details/134401428