欢迎光临
我们一直在努力

openssh加密远程管理

openssh加密远程管理

OpenSSH简介

OpenSSH是SSH(Secure Shell)协议的开源实现,主要用于安全地远程登录到计算机系统。它提供了一种加密的方式来进行远程命令行登录、执行命令以及管理文件传输等操作,从而确保了数据在传输过程中的安全性。OpenSSH支持多种认证方式,包括密码认证和公钥认证,并且默认情况下使用强加密算法来保护通信的安全性。传统的网络服务程序,如 FTP、POP 和 Telnet 其本质上都是不安全的,因为它们在默认状态下网络上用明文传送数据。而 SSH 更为可靠,专为远程登录会话和其他网络服务提供安全性的协议,透过 SSH 可以对所有传输的数据进行加密。

ssh的主要功能

  • 加密的远程管理
  • 加密的远程文件传输 scp。scp 默认连接的端口是 22 端口,如果 ssh 不是使用标准的 22 端口则使用-P(P 大写)指定。
  • 端口映射

openssh的安装

本次案例使用的centos7操作系统进行示例

[root@test ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

OpenSSH 的安装方式因操作系统和环境不同而有所差异,主要安装方式有两种:

  • 通过系统包管理器安装(最推荐、本次示例使用)
  • 从源代码编译安装(适用于需要特定版本、定制功能或系统无包管理器的场景(如嵌入式系统、安全加固环境))
  • 正常情况下,在安装centos系统的时候,系统都会默认安装openssh,可以使用如下命令进行查看是否安装

    [root@test ~]# rpm -qa | grep openssh
    openssh-clients-7.4p1-16.el7.x86_64
    openssh-server-7.4p1-16.el7.x86_64
    openssh-7.4p1-16.el7.x86_64

    使用rpm -qa | grep openssh 命令,如果在输出结果中看到,openssh-clients和openssh-server的软件包,那么说明该系统已经安装了openssh,只需要启用即可。
    如果没有安装的话,可以使用如下命令进行安装

    yum -y install openssh.x86_64 openssh-server-7.4p1-16.el7.x86_64 openssh-7.4p1-16.el7.x86_64

    • openssh-clients-7.4p1-16.el7.x86_64 提供 SSH 客户端工具(用于连接远程主机)
    • openssh-7.4p1-16.el7.x86_64 OpenSSH 的核心基础库和通用文件
    • openssh-server-7.4p1-16.el7.x86_64 提供 SSH 服务端(允许别人连接本机)

    完成了openssh的安装,接下来只需要启动openss即可,如果该软件包之前已经默认安装了的,那么该服务也是默认开机自启动的

    启动openssh
    [root@test ~]# systemctl start sshd

    查看openssh服务的状态
    [root@test ~]# systemctl status sshd
    ● sshd.service – OpenSSH server daemon
    Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
    Active: active (running) since 五 2026-01-02 18:48:48 CST; 23h ago
    Docs: man:sshd(8)
    man:sshd_config(5)
    Main PID: 1037 (sshd)
    Tasks: 1
    Memory: 5.6M
    CGroup: /system.slice/sshd.service
    └─1037 /usr/sbin/sshd -D

    openssh的默认端口号是22端口,也可以通过查看端口号,判断该服务是否已经启动(如下所示,该服务已经启动并正常运行)
    [root@test ~]# ss -luntp | grep 22
    tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=1037,fd=3))

    ssh加密的远程管理

    使用ssh可以更好的便于远程管理服务器,通过网络即可实现,在同一网络内任何地方都能登录到服务器内部对服务器进行管理。远程管理命令格式为:ssh username@ip
    以windows的cmd为例,通过ssh 用户名@IP地址 的方式,我登录到了10.201.9.133这台服务器中,并且可以执行相关命令进行管理

    不过在日常使用中,我们一般不会使用windows自带的cmd去远程管理服务器,都是使用一些三方的软件工具,例如:MobaXterm,没有该工具的小伙伴可以去网上找资源下载下,接下来,介绍下如何使用MobaXterm并通过ssh远程管理服务器。

    打开MobaXterm,点击左上角的Session按钮
    在这里插入图片描述
    因为我们使用ssh去进行远程管理的,索引这里的会话选项也选择ssh
    因为我们使用ssh去进行远程管理的,所以这里的会话选项也选择ssh

    在这里插入图片描述
    点击ok,输入root用户的密码,即可登录到服务器中。

    ssh配置文件

    ssh作为一个服务,自然少不了配置文件,平常也可以通过配置文件进行管理,一下列举一些常用的配置
    ssh配置文件路径: /etc/ssh/sshd_config

    vi /etc/ssh/sshd_config ← 用vi打开SSH的配置文件

    AddressFamliy any;支持那 IP 协议;比如 ipv4,ipv6,;默认 any;

    Port 22 :SSH 端口号配置,默认 22;

    Protocol 2 ; SSH 协议的 2 版本,推荐 2 版本

    LoginGraceTime 2m; 输入密码时的等待时长默认 2 分钟,超出则断开会话;

    ListenAddress IP:监听哪个 IP,默认监听所有 IP;

    PermitRootlogin Yes\\No: 控制 root 登录;

    PermitEmptyPasswords No:控制空密码登录

    PasswordAuthentication Yes:建议禁止密码登录,使用 key 验证登录

    Gatewayports Yes\\No:端口转发功能;

    StrickHostKeyChecking Ask\\No;登录询问;

    MaxAuthTries 6 ;密码最多试错次数,是设置数值的一半次数;

    MaxSessions 10;同一个会话的连接次数;默认 10 个;

    PubkeyAuthentication yes ;公钥的身份验证开启;

    Banner /path/file ;用户 SSH 登录前的提示信息;

    ClientAliveInterval 30: 默认 0 永久连接,可自定义无操作等待时间;

    UseDNS No : DNS 解析;

    Maxstartup: 10:30:100:支持 10 个并发连接,超过 10 个,以 30%概率拒绝,超过 60%的并发则
    全部拒绝;

    AllowUsers user1 user2 user3;允许用户登录,其他人拒绝;

    DenyUsers user1 user2 :拒绝用户登录;

    AllowUsers 和 DenyUsers 只能配置一个,若设置允许用户,其他用户都不能登录,若设置拒绝
    用户,则其他用户都可以登录;

    AllowGroups :允许组访问,如果没有可以添加;

    DenyGroups :拒绝组访问,如果没有可以添加;

    有些时候,只允许部分网段的客户端通过ssh登录到服务器,以最大限度减少不安全因素
    可修改一下两个文件

    /etc/hosts.deny 和 /etc/hosts.allow 是 Linux/Unix 系统中用于基于主机的访问控制(Host-based Access Control) 的两个配置文件,它们由 TCP Wrappers(tcpd)机制提供支持,用于限制或允许特定服务(如 SSH、FTP、Telnet 等)对远程主机的访问。

    典型配置示例
    1、只允许特定 IP 访问 SSH

    [root@node1 ~]# vi /etc/hosts.allow
    sshd: 10.201.9.1

    [root@node1 ~]# vi /etc/hosts.deny
    sshd: ALL

    只有10.201.9.1 能 SSH 登录,其他全部拒绝。

    使用除了10.201.9.1 以外的客户端登录ssh提示如下:
    在这里插入图片描述

    2、修改 ssh 端口号

    为了安全考虑想要修改默认端口号的话就需要编辑 sshd 配置文件了,vim /etc/ssh/sshd_config
    这个文件,这里把#Port 22 这个字段前面的#去掉,再把 22 改成自己要端口就可以了,然后重
    启 ssh 服务。

    vim /etc/ssh/sshd_config
    #Port 22 将#注释去掉,改22为2200。

    在这里插入图片描述
    重启sshd服务器
    systemctl restart sshd

    查看端口是否监听

    [root@node2 local]# ss -luntp | grep 2200
    tcp LISTEN 0 128 *:2200 *:* users:(("sshd",pid=4294,fd=3))
    tcp LISTEN 0 128 :::2200 :::* users:(("sshd",pid=4294,fd=4))

    3、ssh服务访问控制

    SSH服务的访问控制是保障服务器安全的重要手段。通过合理配置,可以有效防止未授权访问、暴力破解等安全威胁。本次介绍的是通过修改sshd_config中的配置来针对用户或者是用户组的服务访问控制。主要涉及到的配置有以下几点:

    • AllowUsers/AllowGroups:只允许指定用户 或组
    • DenyUsers/DenyGroups :明确拒绝某些用户或组

    注意:AllowUsers 和 DenyUsers 同时存在时,Allow 优先级更高。

    • 实例:
      当前系统中有一个名字叫做aaa的用户,需求:禁止aaa用户进行远程登录,配置如下:

    [root@node1 ~]# vi /etc/ssh/sshd_config
    DenyUsers aaa

    #修改完配置之后需要重启sshd服务
    [root@node1 ~]# systemctl restart sshd

    添加完以上配置之后,在使用aaa用户从其他主机进行远程登录(提示“Permission denied”)
    验证:
    在这里插入图片描述
    如果是要禁止多个用户登录的话,就可以考虑使用DenyGroups的方式进行配置。配置如下:

    # 创建一个nologin的组
    [root@node1 ~]# groupadd nologin
    #将bbb用户和ccc用户添加到nologin组中
    [root@node1 ~]# groupmems -g nologin -a bbb
    [root@node1 ~]# groupmems -g nologin -a ccc
    [root@node1 ~]# groupmems -g nologin -l
    bbb ccc
    # 修改ssh主配置文件,添加DenyGroups 参数
    [root@node1 ~]# vi /etc/ssh/sshd_config
    DenyGroups nologin

    #重启sshd服务
    [root@node1 ~]# systemctl restart sshd

    验证:
    在这里插入图片描述

    ssh 密钥级身份认证

    目前 SSH 连接还需要输入密码,下面将介绍使用密钥进行连接,免去了输入密码的烦恼。
    示例环境:

    主机名角色IP 地址操作系统版本用途说明
    centos-manager 管理节点 10.201.9.134 CentOS Linux 7 部署控制、监控、调度
    centos-node1 工作节点 10.201.9.133 CentOS Linux 7 运行应用容器或服务

    以上两台服务器,当manager去通过ssh管理node1的时候,使用密钥连接,不需要输入密码。

    • 在manager服务器上生产密钥

    首先创建.ssh 的目录
    [root@centos-manager ~] mkdir /root/.ssh

    然后使用 ssh-keygen 生成密钥,ssh-keygen -t rsa,生成密钥的过程中一路回车就可以。

    [root@centos-manager] ssh-keygen -t rsa
    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:C2PberhNIbtTSp4+U8U2APnEfyODRcHO1m3yBwXi4N8 root@node2
    The key's randomart image is:
    +—[RSA 2048]—-+
    | .+ o+.. .. |
    | . +.oo . .|
    | o O.... . |
    | o %.=.+ |
    | = S+ =.=E. |
    | ..Boo . .|
    | oo*+ . |
    | O=. |
    | .=*. |
    +—-[SHA256]—–+

    [root@centos-manager ~] cd /root/.ssh/
    [root@centos-manager .ssh] ll
    -rw——-. 1 root root 1679 11 14:25 id_rsa
    -rw-r–r–. 1 root root 399 11 14:25 id_rsa.pub

    密钥生成完成之后,进入到/root/.ssh 的目录中查看,会多出两个文件,这两个文件就是SSH 密钥对
    id_rsa —— 私钥(Private Key)存储在本地,用于证明你的身份。当你尝试 SSH 登录到其他服务器时,SSH 客户端会使用此私钥对服务端的进行签名。
    id_rsa.pub —— 公钥(Public Key)内容需要被复制到目标服务器的 ~/.ssh/authorized_keys 文件中。当你用私钥 id_rsa 尝试登录时,目标服务器会用这个公钥验证你的签名是否合法

    • 通过 ssh-copy-id 工具,将公钥传给目标主机manager,然后就可以通过证书无口令登录。

    [root@centos-manager .ssh] ssh-copy-id root@10.201.9.133
    /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@10.201.9.133's password:

    Number of key(s) added: 1

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

    ssh-copy-id 此命令会自动将 id_rsa.pub 的内容追加到 centos-node1(目标服务器) 的 /root/.ssh/authorized_keys 中。

    • 免密登录,再次使用ssh登录的时候,就可以实现免密登录

    [root@centos-manager .ssh] ssh root@10.201.9.133
    Last login: Sat Jan 3 19:33:13 2026 from 10.201.9.140
    [root@node1 ~] ifconfig ens33
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 10.201.9.133 netmask 255.255.255.0 broadcast 10.201.9.255
    inet6 fe80::d995:c7fb:4b15:c27c prefixlen 64 scopeid 0x20<link>
    ether 00:0c:29:66:93:0c txqueuelen 1000 (Ethernet)
    RX packets 47801 bytes 21827862 (20.8 MiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 55501 bytes 77025853 (73.4 MiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    加密的远程文件传输 scp

    scp(Secure Copy Protocol)是 Linux/Unix 系统中用于在本地与远程主机之间安全地复制文件和目录的命令。它基于 SSH 协议,因此传输过程是加密的,安全性高。

    • 基本语法:scp [选项] 源路径 目标路径
    • 常用选项:
    选项说明
    -r 递归复制整个目录
    -P port 指定 SSH 端口(注意是大写 P)
    -p 保留文件的修改时间、访问时间和权限模式
    -C 启用压缩(加快传输速度)
    -v 显示详细输出(调试用)
    • 常用用法示例:

    # scp 本地文件路径 用户名@IP地址:传到对面主机的路径
    #将本机文件上传到目标服务器指定目录
    [root@node1 opt]# scp /opt/test.sh root@10.201.9.140:/opt
    root@10.201.9.140's password:
    test.sh 100% 210 286.5KB/s 00:00

    # 从远程主机拉取文件到本地
    # scp 用户名@IP地址:远程文件路径 本地路径
    [root@node1 opt]# scp root@10.201.9.140:/opt/1.txt /opt/
    root@10.201.9.140's password:
    1.txt 100% 0 0.0KB/s 00:00

    基于 ssh 的跳板机配置:

    基于 SSH 的跳板机(也称为“堡垒机”或“跳转主机”,Jump Host / Bastion Host)是一种常见的安全架构,用于控制对内部网络中服务器的访问。用户必须先通过跳板机,再连接到目标主机,从而减少直接暴露内部主机的风险。

    登录方式:

    • 用户 → 跳板机) → 目标主机
    • 所有 SSH 连接都通过跳板机中转

    示例:

    角色IP 地址说明
    跳板机 10.201.9.133 用于中转 SSH 连接的堡垒机
    目标服务器 10.201.9.140 实际需要访问的节点(Node)

    如图所示:客户端无法访问目标服务器node,而是需要通过jumpserver跳板机进行中转才能够访问。
    在这里插入图片描述

    • 服务端配置(跳板机)

    [root@jumper .ssh]# useradd jumpserver
    # 限制跳板机用户的权限,禁用 shell 登录
    [root@jumper .ssh]# usermod -s /usr/sbin/nologin jumpserver
    #更新jumpserver的密码
    [root@jumper .ssh]# passwd jumpserver

    客户端中通过跳板机进行登录
    这里以windows的cmd为例,可以看到我们的主机如果是直接访问目标主机的话,是无法通过ssh直接连接的。
    在这里插入图片描述
    通过跳板机进行登录:语法ssh -J 跳板机用户@跳板机IP地址 目标主机用户@目标主机IP地址,可以登录成功,这种方式,虽然可以跳转登录,但是还是暴露了ip地址,更推荐使用ssh端口转发的方式进行跳转登录
    在这里插入图片描述

    赞(0)
    未经允许不得转载:171主机测评 » openssh加密远程管理
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址