AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 726964
Accepted
400 the Cat
400 the Cat
Asked: 2022-12-02 07:12:39 +0800 CST2022-12-02 07:12:39 +0800 CST 2022-12-02 07:12:39 +0800 CST

sshd:为当前会话添加 AllowUsers,无需编辑 sshd_config

  • 772

我想暂时从 ip 1.2.3.4 授予 root 访问权限,仅针对当前会话(直到下一次 sshd 或服务器重启)

我可以将其添加到sshd_config,然后记得将其删除:

AllowUsers [email protected]

但是有更好的方法吗?我可以在不编辑配置文件的情况下更改当前运行的 sshd 守护进程的当前设置吗?

command-line
  • 4 4 个回答
  • 89 Views

4 个回答

  • Voted
  1. Kamil Maciorowski
    2022-12-06T15:06:37+08:002022-12-06T15:06:37+08:00

    然后记得删除它

    立即将其删除,这样就没有什么可记住的,也没有什么可忘记的。我是说:

    1. 编辑sshd_config,保存更改。
    2. 重新启动守护进程。
    3. 立即编辑sshd_config回来,保存更改。
    4. 不要重新启动守护进程。

    这样当前正在运行的(即新启动的)守护进程使用您的临时配置,因为它是它已读取的配置;但是未来的守护进程将使用常规配置,因为配置文件已经被编辑回来了。临时配置不再存在,除了在当前运行的守护进程的内存中,所以直到下一次sshd或服务器重新启动,完全按照你的意愿。

    (1) 和 (3) 可以在文本编辑器的单个实例中方便地完成,而无需退出编辑器,只要您可以从另一个控制台执行 (2)。如果您的文本编辑器提供“撤消”功能,则可以使用它来取消编辑时出错的风险。

    笔记:

    • sshd当 OpenSSH 收到挂断信号 SIGHUP 时,它会重新读取其配置文件,方法是使用启动时使用的名称和选项执行自身。无论sshdOpenSSH 是否作为 systemd 服务启动或以其他方式启动,此方法都应该有效。

    • 重新启动(甚至停止)sshd 不会影响现有连接。

    • 4
  2. Best Answer
    Jim L.
    2022-12-09T16:57:33+08:002022-12-09T16:57:33+08:00

    在 FreeBSD 中,rc系统提供了一种将标志传递给sshd守护进程的机制,即sshd_flags在启动/重新启动之前设置变量sshd。系统将rc查找文件名 /etc/rc.conf.d/sshd/* 并在任何“服务 sshd”调用中获取所有此类文件。这使得在正确目录中创建一次性唯一文件名、重新启动服务、删除该唯一文件名变得相当简单,然后我们就完成了。

    据我公认的有限知识,Linux 缺少一个专用目录,人们可以在该目录中放置任意数量的任意命名文件,以配置特定守护进程的运行时行为。我试图通过修改 /etc/default/ssh 以从特定位置 ( ) 搜索和源文件来模仿 (Ubuntu) Linux 中的 FreeBSD 机制,/etc/default/ssh.tmp.*但没有成功。通常在我手头的Linux系统上,/etc/default/ssh名义上似乎有:

    # Default settings for openssh-server. This file is sourced by /bin/sh from
    # /etc/init.d/ssh.
    
    # Options to pass to sshd
    SSHD_OPTS=
    

    在某些系统上,这里的关键变量名称似乎是OPTIONS,因此请检查您的systemd服务文件sshd以确定。

    鉴于 A 计划行不通,我降低了期望并选择了 B 计划,这与修改您的计划基本相同,sshd_config只是由于默认情况下/etc/default/ssh没有内容,因此在此处附加所需的运行时选项可能比在此处附加您想要的运行时选项更安全是不是要弄乱你的/etc/ssh/sshd_config文件。此外,由于 的语法/etc/default/ssh是 shell 语法,once 感觉相对安全,因为通过附加SSHD_OPTS任何先前分配的 SSHD_OPTS 的更改值将被下一次调用覆盖,然后一旦/etc/default/ssh.safety重命名回/etc/default/ssh.

    # cat << EOF > test.sh
    cp -p /etc/default/ssh /etc/default/ssh.safety
    printf 'SSHD_OPTS='\''-o "AllowUsers [email protected]"'\''\n' >> /etc/default/ssh
    service sshd restart
    mv /etc/default/ssh.safety /etc/default/ssh
    EOF
    

    所以从:

    # service ssh status
    ● ssh.service - OpenBSD Secure Shell server
       Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
       Active: active (running) since Thu 2022-12-08 16:36:00 PST; 51s ago
      Process: 43364 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
     Main PID: 43367 (sshd)
        Tasks: 1 (limit: 9830)
       CGroup: /system.slice/ssh.service
               └─43367 /usr/sbin/sshd -D
    
    ...snip...
    

    和:

    # cat /etc/default/ssh 
    # Default settings for openssh-server. This file is sourced by /bin/sh from
    # /etc/init.d/ssh.
    
    # Options to pass to sshd
    SSHD_OPTS=
    

    然后:

    # cat test.sh
    cp -p /etc/default/ssh /etc/default/ssh.safety
    printf 'SSHD_OPTS='\''-o "AllowUsers [email protected]"'\''\n' >> /etc/default/ssh
    service ssh restart
    mv /etc/default/ssh.safety /etc/default/ssh
    

    我们可以:

    # sh test.sh
    # service ssh status
    ● ssh.service - OpenBSD Secure Shell server
       Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
       Active: active (running) since Thu 2022-12-08 16:37:42 PST; 3min 2s ago
      Process: 54918 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
     Main PID: 54923 (sshd)
        Tasks: 1 (limit: 9830)
       CGroup: /system.slice/ssh.service
               └─54923 /usr/sbin/sshd -D -o AllowUsers [email protected]
    
    ...snip...
    

    注意这里sshd运行的是我们想要的短期命令行选项!

    另请注意,它/etc/default/ssh已恢复到未更改的状态:

    # cat /etc/default/ssh 
    # Default settings for openssh-server. This file is sourced by /bin/sh from
    # /etc/init.d/ssh.
    
    # Options to pass to sshd
    SSHD_OPTS=
    

    这意味着下次我们:

    # service ssh restart
    

    我们会看到:

    # service ssh status
    ● ssh.service - OpenBSD Secure Shell server
       Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
       Active: active (running) since Thu 2022-12-08 16:43:56 PST; 7s ago
      Process: 44890 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
     Main PID: 44896 (sshd)
        Tasks: 1 (limit: 9830)
       CGroup: /system.slice/ssh.service
               └─44896 /usr/sbin/sshd -D
    

    回到裸露的库存sshd服务。

    同样,这与修改本质上是相同的技巧,/etc/ssh/sshd_config只是如果sshd_config被弄乱或删除(甚至重命名),与从类似的 hosed/etc/default/ssh文件中恢复相比,您可能更难从中恢复。由于/etc/default/ssh默认情况下是空的,rm因此在最坏的情况下您可以简单地sshd返回到开始尝试玩聪明把戏之前的运行方式。

    • 3
  3. DotNetRussell
    2022-12-05T03:39:15+08:002022-12-05T03:39:15+08:00

    不,您不能在不编辑配置文件的情况下更改当前运行的 sshd 守护进程的设置。sshd 守护进程在启动时读取其配置,因此您对配置文件所做的任何更改只有在您重新启动守护进程时才会生效。

    • 1
  4. meuh
    2022-12-12T02:16:24+08:002022-12-12T02:16:24+08:00

    编写您自己的单元文件mysshd.service,指向一个sshd_config包含所有需要更改的不同文件,然后启动它。包括一个Conflicts=sshd.service以便停止正确的 sshd 服务。一次只能运行这两项服务中的一项。当正确的 sshd 服务重新启动时,mysshd 将停止。

    您还可以-o向 中添加选项ExecStart=并使用原始 sshd_config文件,如下所示。他们将被首先考虑。(此示例是从 的输出中提取的systemctl cat sshd。这在其他发行版中可能有所不同)。

    cat >/etc/systemd/system/mysshd.service <<\!
    [Unit]
    Description=my let root in OpenSSH server daemon
    Conflicts=sshd.service
    [Service]
    Type=notify
    EnvironmentFile=-/etc/crypto-policies/back-ends/opensshserver.config
    EnvironmentFile=-/etc/sysconfig/sshd
    ExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY -o 'AllowUsers [email protected]'
    ExecReload=/bin/kill -HUP $MAINPID
    KillMode=process
    !
    systemctl daemon-reload
    systemctl start mysshd
    

    房间里的大象是添加 anAllowUsers x@y只允许该用户,不允许其他用户。

    • 0

相关问题

  • ip 命令是否支持通配符?

  • 需要许多参数的实用程序的推荐界面是什么?[关闭]

  • 远程运行 X 应用程序,在远程主机上运行 GUI [关闭]

  • 使 mysql CLI 以交互方式向我询问密码

  • 没有服务器的命令行 pub/sub?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve