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
    • 最新
    • 标签
主页 / user-265672

jma's questions

Martin Hope
jma
Asked: 2021-03-02 02:21:11 +0800 CST

sshd 在启动时不读取包含的配置文件

  • 1

我/etc/ssh/sshd_config以这一行结束:

Include sshd_config.d/sftp_users.conf

但是,不包括该文件的内容。通过绝对路径或使用 glob 包括在内不会改变任何内容。

为了说服自己它真的没有被阅读,我 strace'd sshd (下面的输出)。绝对不会被阅读。Include然而,据说支持自7.3p1以来就存在,并且显然是在 2020 年 2 月 1 日(2020 年 3 月 31 日之前)承诺的。

虽然我可以将包含的文件放在 mainsshd_config中,但将自定义内容推送到sshd_config.d/*conf.

有什么建议为什么这不起作用?

这是一个 ubuntu 20.04 图像,fwiw。

更新

使用-dddsshd 选项,

/usr/sbin/sshd -ddd

我发现包含相对路径名(在我看来是规范的)不起作用。更改为绝对路径名报告正在读取配置:

debug2: /etc/ssh/sshd_config line 9: new include /etc/ssh/sshd_config.d/sftp_users.conf
debug2: /etc/ssh/sshd_config line 9: including /etc/ssh/sshd_config.d/sftp_users.conf
debug2: load_server_config: filename /etc/ssh/sshd_config.d/sftp_users.conf
debug2: load_server_config: done config len = 182
debug2: parse_server_config_depth: config /etc/ssh/sshd_config.d/sftp_users.conf len 182
debug3: checking syntax for 'Match Group sftp_users'

但是模式从不匹配,而如果Match块sshd_config本身就匹配。

ssh
  • 3 个回答
  • 1236 Views
Martin Hope
jma
Asked: 2021-02-26 12:16:42 +0800 CST

openssh,允许某些用户使用带有密码和有限权限的 sftp

  • 1

我有一个带有 openssh 的 linux 主机,它允许用户使用公钥登录。

AuthenticationMethods publickey

但是现在我有一些用户需要使用 sftp 作为文件删除来访问主机。此外,这些用户将使用用户密码而不是密钥对。

我使所有这些用户都属于该组sftp_users。

[email protected]:~$ id
uid=1005(an_sftp_user) gid=1007(an_sftp_user) groups=1007(an_sftp_user),1006(sftp_users)
[email protected]:~$ groups
an_sftp_user sftp_users
[email protected]:~$

现在我创建/etc/ssh/sshd_config.d/sftp_users.confroot拥有的文件0644:

Match Group sftp_users
  X11Forwarding no
  AllowTcpForwarding no
  AuthorizedKeysCommand /bin/true
  AuthenticationMethods keyboard-interactive
  PasswordAuthentication yes
  ChrootDirectory /sftp-incoming

我想要这样做是允许组中的用户sftp_users能够使用密码和访问权限进行连接/sftp-incoming。

实际发生的情况是,我看到一个消息服务器端auth.log仅表示连接已关闭,并且在客户端,我看到(使用sftp -v)它尝试了它在其中找到的证书$HOME/.ssh(我已经为这些测试禁用了我的 ssh-agent ) 但从不尝试密码登录。

确实,一行是这样的:

debug1: Authentications that can continue: publickey

所以不知何故,我的比赛没有得到满足或没有被看到。但我不清楚为什么。

有什么建议我哪里出错了吗?

更新

@Gogowitsch 的解决方案在很大程度上回答了这个问题,尤其是注释,它sftp-internal是 openssh 内部的,因此不需要在我的 chroot 监狱中提供二进制文件。同样重要的是发现 chroot 要求目录链一直是 0755 root,所以我必须对一些权限进行排序。

他将配置全部放在一个sshd_config文件中的建议也很有帮助。事实上,一旦它开始工作,将该块移回配置文件并使用Include它来包含它会失败而不会出错。该块根本没有使用。我正在使用 8.2:

OpenSSH_8.2p1 Ubuntu-4ubuntu0.1, OpenSSL 1.1.1f  31 Mar 2020

声称支持Include(自7.3p1起出现,显然于 2020 年 2 月 1 日承诺(2020 年 3 月 31 日之前)。

ssh
  • 1 个回答
  • 92 Views
Martin Hope
jma
Asked: 2020-10-14 10:17:15 +0800 CST

Postfix:重新投递已投递的邮件

  • 0

我在 postfix 中设置了一个本地邮件传递用户,但事实证明他想使用 gmail 界面。所以我为他设置了一个别名条目,他的新邮件现在转到了 gmail。

在他的本地 Maildir 目录中发送了大约 100 条消息。我想将它们发送到他的 gmail 帐户,但我不知道如何获取 postfix 以重新发送已发送的邮件。

我想我可以设置一个弹出服务器,让他配置 gmail 以弹出邮件,然后在他完成后再次将其关闭。鉴于用户的技术复杂性,大多数替代解决方案可能更容易。

有没有办法重新排列这些传递的消息?

postfix
  • 1 个回答
  • 103 Views
Martin Hope
jma
Asked: 2020-10-14 09:17:34 +0800 CST

OpenDKIM 未签名但没有错误

  • 2

我已经在 ubuntu 16.04 主机上设置了带有后缀的 opendkim (2.10)。根据日志,一切都很好(即没有错误),但邮件没有被签名。我可以看到 postfix 正在将消息传递给 OpenDKIM(因为我停止了 opendkim,postfix 抱怨它不存在),但我对 OpenDKIM 本身没有可见性。

这是我得到的配置:

opendkim.conf:

Canonicalization        relaxed/relaxed
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
LogWhy                  Yes
MinimumKeyBits          1024
Mode                    sv
PidFile                 /var/run/opendkim/opendkim.pid
SigningTable            refile:/etc/opendkim/SigningTable
# Must agree with value in /etc/default/opendkim.                                                               
Socket                  inet:8891@localhost
## Postfix puts itself in a chroot jail and can't see this in the                                               
## default location.  So just use TCP.                                                                          
# Socket                  local:/var/run/opendkim/opendkim.sock                                                 
Syslog                  Yes
SyslogSuccess           Yes
TemporaryDirectory      /var/tmp
UMask                   022
UserID                  opendkim:opendkim

# Always oversign From (sign using actual From and a null From to prevent malicious                             
# signatures header fields (From and/or others) between the signer and the verifier)                            
OversignHeaders         From

# Hashing Algorithm                                                                                             
SignatureAlgorithm      rsa-sha256

# Auto restart when the failure occurs. CAUTION: This may cause a tight fork loops                              
AutoRestart             Yes

键表:

nantes-1.p27.eu   p27.eu:mail:/etc/opendkim/p27.eu.key

签名表:

*@p27.eu                 nantes-1.p27.eu
*@transport-nantes.com   nantes-1.p27.eu

受信任的主机:

127.0.0.1

后缀/main.cf:

# [...]

# OpenDKIM                                                                                                      
smtpd_milters           = inet:127.0.0.1:8891
non_smtpd_milters       = $smtpd_milters
milter_default_action   = accept
# Postfix v3 so milter protocol 6 and not 2.
milter_protocol         = 6
# There was a time, at least, when "auth_type" was not passed by default.
# I've not been able to determine if this still matters or not.
milter_mail_macros="i {mail_addr} {client_addr} {client_name} {auth_type} {auth_authen}"

测试:

发送邮件不会导致日志中出现错误,但该邮件未经过 dkim 签名。当我在本地测试时,我看到了:

[T] jeff@nantes-1:~ $ opendkim-testkey -d p27.eu -s mail -vvvv
opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: checking key 'mail._domainkey.p27.eu'
opendkim-testkey: key not secure
opendkim-testkey: key OK
[T] jeff@nantes-1:~ $ opendkim-testkey -d transport-nantes.com -s mail -vvv
opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: checking key 'mail._domainkey.transport-nantes.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK
[T] jeff@nantes-1:~ $ 

有什么建议我做错了什么或如何进一步调试?

附录:解决方案

ubuntu 16.04 OpenDKIM 解决方案由此产生了 OpenDKIM:

/usr/sbin/opendkim -x /etc/opendkim.conf -u opendkim -P /var/run/opendkim/ope dkim.pid -p inet:8891@localhost

解决方案是/etc/opendkim.conf而不是/etc/opendkim/opendkim.conf. (在某处我读过/etc/opendkim/opendkim.conf,正确或不正确,我永远都读过一样。)

postfix dkim opendkim
  • 1 个回答
  • 499 Views
Martin Hope
jma
Asked: 2017-10-12 22:36:58 +0800 CST

没有初始路径组件的 nginx 位置

  • 2

我有一个看起来像这样的位置块:

root /var/www/ProjectP;

location /p/ {
    index index.php;
    try_files $uri $uri/ =404;
}

location ~ /p/.*\.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

为了完成这项工作,我创建了一个目录/var/www/ProjectP/p/,这是一个可怕的 hack,因为它提供了项目在 http 空间中的位置的知识,而不是 nginx。Nginx 配置应该能够在/pp/不修改项目 P的情况下将其移动到。

这个特定的项目没有proxy_pass指令,但接下来会发生,然后我的 hack 不太可能奏效。

我确信 nginx 有一个正确的方法来处理如此常见的事情,但我还没有找到它。任何指针?

更新 1

正如@RichardSmith 所说,正确的方法肯定是别名指令。在静态内容上测试这个效果很好:

location /a/ {
    alias /var/www/ProjectA/;
    index index.html;
    try_files $uri $uri/ =404;
}

当我对 php 代码做同样的事情时,我得到了一半的成功:

location /p/ {
    alias /var/www/ProjectP/;
    index index.php;

    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ =404;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ /p/(.+\.php)$ {
    alias /var/www/ProjectP/$1;
    include snippets/fastcgi-php.conf;

    # With php7.0-fpm:
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    ## These next are largely set via snippets/fastcgi-php.conf.
    ## Trying them here doesn't help, but I leave them (commented out)
    ## for the moment...
    #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    #include fastcgi_params;
    #fastcgi_param SCRIPT_FILENAME $uri;
}

针对非 php 文件进行测试,我确认第一个块有效。但是第二个块没有,所以 php 文件不能正常服务。(我得到 404。)我在最后注释掉的 fastcgi 指令上尝试了一些变体,但显然不是正确的组合。

更新 2

这行得通。

root /var/www/;

location /p/ {
    alias /var/www/ProjectP/;
    index index.php;

    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ =404;

    # Pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;

        # With php7.0-fpm:
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $request_filename;
    }
}
nginx
  • 2 个回答
  • 6943 Views
Martin Hope
jma
Asked: 2016-02-27 02:49:15 +0800 CST

让木偶安装模块

  • 2

在我当前的设置中,我有一个主机启动脚本,它在 DC 某处获取一个新配置的 VM,发出我需要运行的几个命令puppet apply(确保设置了主机名,安装了该 puppet,它可以看到它的 puppet 配置)。然后puppet apply负责其余的工作(加上部署我们软件的结构)。

一切都好,但安装所需的 puppet 模块目前发生在我的主机脚本中。在我想安装新模块之前,这非常有效,然后我必须在现有主机上手动对其进行排序。看起来puppet应该可以做到这一点,但是我没有找到正确的指令。

# If only this worked...
module { 'maestrodev-rvm':
    ensure => present
}

我见过puppet librarian,但它似乎增加了比它解决我们安装的少量模块更多的复杂性。如果/当我们需要更复杂的东西时,这似乎是一个解决方案。

我错过了什么吗?

puppet
  • 1 个回答
  • 442 Views
Martin Hope
jma
Asked: 2016-02-16 06:43:38 +0800 CST

puppet master 上的无密码 ssh 密钥?

  • 1

我们的 puppet 代码位于 github 上,所以我们拉取 puppet master。

但是我们的 github 存储库是私有的。将 puppet master ssh 密钥提供给 github 而不使用密码(github 称之为部署密钥)是标准(最佳)实践吗?我可以/应该做得更好吗?

security
  • 1 个回答
  • 191 Views
Martin Hope
jma
Asked: 2016-02-16 00:10:38 +0800 CST

用 vagrant 测试 puppet master

  • 2

我是木偶新手。我读了一堆,设法编写了一个简单(可能很笨拙)的清单来配置主机以及一个类似简单的结构脚本来处理预先木偶设置。太好了,所以是时候更认真了。我在apache2下配置了一个puppet master。(感谢 puppet labs 的 deb,我在 ubuntu 14.04 上使用 3.8 版的软件包...)

到目前为止,一切都很好,但是尽管进行了很多搜索和比赛,但我现在仍停留在几个点上。 最终,这归结为如何设置回归测试,以便我相信我总是可以重新创建我的基础设施。

  1. puppet master在apache2下运行。我认为它是健康的,因为它没有抱怨,而且我在 8140 上服务。但我希望有一个比没有错误更好的方式来确认这一点。有什么方法可以查询主人的健康吗?

  2. 我希望能够进行自动化测试。对于代理(我的(小)舰队中的个人主机),我可以调出 vagrant vm,告诉他们他们的名字是 X,然后进行 puppet 申请。因此,我可以查看主机是否按照我对主机 X 的期望出现。然后我可以在 vm 上运行一个脚本,检查我认为主机实际上应该做什么。但我想自动化它,但奇怪的是我还没有找到这样做的通用食谱。我敢打赌这不是我需要发明的东西。任何指针?

  3. 同样,我也想为 master 做自动化测试。所以这是(1)和(2)在一起,因为我不确定如何测试大师。

感谢您的任何指示。

puppet
  • 1 个回答
  • 298 Views
Martin Hope
jma
Asked: 2015-09-24 00:18:43 +0800 CST

Puppet:编译二进制文件

  • 1

我们使用 puppet 分发我们自己的软件(即,我们编写的东西,我们希望在我们自己的服务器上运行)。所以我们必须在某个地方编译这个软件。

对我来说,我可以 git pull 并在 puppet master 上编译它是有道理的。编译一次,分发,我们的机器是同构的,二进制文件在它们指定的主机上运行。

但是当我们升级主机时,各种库会发生变化,我们会发现自己需要为新的库集重新编译。

似乎正确的做法是打包我们的软件,将这些 debs 提供给我们自己,然后在 puppet 中使用包指令。

Q1:这听起来对吗/我错过了一些重要的事情吗?

Q2:那么deb是如何打包上传的呢?这是手动发布过程吗?这意味着我们将测试服务器升级到新的操作系统和库版本,以便编译和打包。

Q2B:现在假设我安装了那个 CI 服务器,我一直告诉我的团队我会开始安装。据我所知,CI 服务器对 dist 升级一无所知。那么这部分是否必须保持手动?

puppet
  • 1 个回答
  • 65 Views
Martin Hope
jma
Asked: 2015-09-23 23:56:11 +0800 CST

Puppet:管理多个用户而不重复自己

  • 0

当我将用户添加到我的 puppet 配置时,我最终会复制/粘贴如下内容:

user {'jeff':
  ensure     => 'present',
  groups     => ['sudo', 'supervisor'],
  require    => [Group['sudo'], Group['supervisor']],
  home       => '/home/jeff',
  managehome => true,
  password => '...',
 shell      => '/bin/bash',
}
ssh_authorized_key { 'jeff@lorax':
  ensure  => 'present',
  user    => 'jeff',
  require => User['jeff'],
  type    => 'rsa',
  key     => '...',
}

从一个用户到另一个用户唯一变化的是用户名、ssh 键(标签和值,有些用户有几个),有时还有组集。

我很确定我错过了一些关于如何更好地做到这一点的东西,但我还没有找到它。任何指针?

puppet
  • 1 个回答
  • 420 Views
Martin Hope
jma
Asked: 2015-09-04 03:50:28 +0800 CST

使用 puppet 配置 puppet master

  • 3

我开始使用 puppet,在配置 puppet master 时,我觉得我希望 puppet 也能维护那个主机。奇怪的是,我没有看到任何建议,甚至没有太多支持或反对的讨论,这让我想知道是否有理由。

我想象这样的事情来引导主机创建(伪shell脚本):

git clone git://github.com/me/puppit.git /etc/puppet/
puppet apply puppetmaster.pp

然后在该主机上运行 puppetd,以便它从 puppetmasterd(同一主机)中提取目录,从而保持适当的配置。

puppet
  • 3 个回答
  • 518 Views

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve