小编Ban*_*uin的帖子

为 OpenSSH RemoteForward 确定动态分配的端口

问题 (TL; DR)

当为远程转发动态分配端口(又名-R选项)时,远程机器上的脚本(例如来自.bashrc)如何确定 OpenSSH 选择了哪些端口?


背景

我使用 OpenSSH(两端)连接到我与多个其他用户共享的中央服务器。对于我的远程会话(目前),我想转发 X、cups 和 pulseaudio。

最简单的是使用-X选项转发 X。分配的 X 地址存储在环境变量中,DISPLAY并且在大多数情况下,我可以从中确定相应的 TCP 端口。但我几乎不需要这样做,因为 Xlib 尊重DISPLAY.

我需要一个类似的杯子和脉冲音频机制。两种服务的基础都存在,分别以环境变量CUPS_SERVER和的形式存在PULSE_SERVER。以下是使用示例:

ssh -X -R12345:localhost:631 -R54321:localhost:4713 datserver

export CUPS_SERVER=localhost:12345
lowriter #and I can print using my local printer
lpr -P default -o Duplex=DuplexNoTumble minutes.pdf #printing through the tunnel
lpr -H localhost:631 -P default -o Duplex=DuplexNoTumble minutes.pdf #printing remotely

mpg123 mp3s/van_halen/jump.mp3 #annoy co-workers
PULSE_SERVER=localhost:54321 mpg123 mp3s/van_halen/jump.mp3 #listen to …
Run Code Online (Sandbox Code Playgroud)

openssh ssh-tunneling shell-script port-forwarding

17
推荐指数
1
解决办法
4700
查看次数

命令的确切行为是什么:ip 地址更改?

我一直在摆弄 IPv6 和地址生命周期。我发现valid_lft如果使用得当,该属性将使 v6 地址自动消失。为了延长地址的生命周期,我会

ip addr change 1:2:3:4::1/112 dev eth0 valid_lft 86000
Run Code Online (Sandbox Code Playgroud)

的使用ip addr change没有出现在我可以访问的任何手册页(Debian、Ubuntu 和在线)中,也没有出现在官方文档中。我在一篇文章中找到的提到 2009 年发给 ipv6-ops 邮件列表的电子邮件。

从我可以确定的情况来看,我想总是可以使用ip addr change而不是ip addr add,因为如果地址不存在,ip则会添加一个,就像ip addr add使用过一样。

这是正确的,即,任何人都可以解释ip addr change它的确切作用以及它与 的区别ip addr add吗?

networking iproute

12
推荐指数
1
解决办法
1593
查看次数

在没有 while 循环的情况下使用 bash 的 read 内置

我已经习惯了 while 循环中bash的内置read函数,例如:

echo "0 1
      1 1
      1 2
      2 3" |\
while read A B; do
    echo $A + $B | bc;
done
Run Code Online (Sandbox Code Playgroud)

我一直在做一些make项目,拆分文件和存储中间结果变得谨慎。因此,我经常最终将单行分解为变量。虽然下面的例子效果很好,

head -n1 somefile | while read A B C D E FOO; do [... use vars here ...]; done
Run Code Online (Sandbox Code Playgroud)

这有点愚蠢,因为 while 循环永远不会运行超过一次。但没有while,

head -n1 somefile | read A B C D E FOO; [... use vars here ...]
Run Code Online (Sandbox Code Playgroud)

当我使用它们时,读取变量总是空的。我从未注意到 的这种行为read,因为通常我会使用 while 循环来处理许多类似的行。如何在没有 while 循环的情况下使用 …

bash pipe shell-script subshell read

10
推荐指数
1
解决办法
4925
查看次数

带有扩展的 OpenSSL 签名请求

我为我的开发环境设置了一个小的自签名 CA。我想创建许多具有不同属性的不同服务器证书。我的方法是为每个服务器创建一个特定的扩展部分。我有一个很大的 openssl.cnf,其中包含这样的部分:

[ server0_http ]

nsCertType                      = server
nsComment                       = "HTTP server0"
basicConstraints=CA:FALSE
extendedKeyUsage=serverAuth
subjectAltName=@server0_http_altnames

[ server0_http_altnames ]
URI.1 = https://server.domain.tld
URI.2 = http://server.domain.tld
IP.1  = 1.2.3.4
DNS.1 = server.doamin.tld
Run Code Online (Sandbox Code Playgroud)

然后当我openssl使用参数创建我的 csr 时-config myCustomOpenssl.cnf -reqexts server0_http。当我查看我的请求时,使用openssl req -text -noout -in myrequest.csr一切看起来都很完美。

但是,在我签署请求后,“X509v3 扩展密钥用法”和“X509v3 主题备用名称”部分消失了。为了解决这个问题,我还-extfile myCustomOpenssl.cnf -reqexts server0_http加入了签名调用的参数openssl

这是预期的行为吗?我一直认为单独的 csr 文件必须足以根据要求创建证书,即包含其所有部分。我的系统现在的工作方式是我获得了缺少部分的证书。要获得我想要的证书,我必须提供 csr 文件和用于创建请求的 openssl 配置文件中的相应部分。这对于我的小型设置来说没有问题,但是如果我成为一个更大的 CA,这会变得非常混乱。它应该是这样的还是我错误地使用了openssl?

openssl

10
推荐指数
1
解决办法
4854
查看次数

哪些 SELinux 政策适用于 haproxy?

我刚刚遇到了另一个与 SELinux 相关的问题。似乎haproxy不允许我打开与后端的 TCP 连接,我能够使用 Google 快速修复它。现在,我想知道如果人们真的知道如何使用 SELinux,将如何解决这个问题?

问题

我想使用 haproxy 将我可公开访问的端口 5000 转发到 127.0.0.1:5601。我相应地配置了 haproxy,并systemctl restart haproxy立即在系统日志中得到了这个美丽:

May  9 09:38:45 localhost haproxy[2900]: Server kibana/app1 is DOWN, reason: Layer4 connection problem, info: "General socket error (Permission denied)", check duration: 0ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
Run Code Online (Sandbox Code Playgroud)

permission denied --> SELinux已成为我解决 Linux 问题的主要短路评估。多年来没有让我失望!

解决方案

根据我们在 Serverfault上的朋友的说法,解决此问题的方法

semanage port --add --type http_port_t --proto tcp …
Run Code Online (Sandbox Code Playgroud)

selinux

9
推荐指数
1
解决办法
1万
查看次数

为子文件夹和项目定制 vimrc

我在许多不同的环境中使用 vim ......实际上,可能大多数人都这样做:有配置文件的编辑、编程、文档、电子邮件等。

我经常发现自己希望有一种工具可以让我将 vimrc 放入目录中,每当我从该目录中启动 vim 时,也会读取本地 vimrc 以进行特定于上下文的适应。例如:

  • 一个 vimrc in etc 隐式设置/释放锁并在写入之前/写入时创建备份
  • 我的每个编程项目都有一个 vimrc,用于(例如)项目特定的缩进和常用的宏,例如 Debian 补丁签名
  • 每个文档目录中的 vimrc 用于文档语言特定设置(拼写检查!)

这不仅对我自己有帮助,而且使我/我们能够在所描述的每种情况下在许多用户之间共享项目和任务特定的设置,并根据我们希望应用的上下文进行配置。

这对我来说似乎非常明智,并且不太难拥有/实施。有人知道vim插件或有一个配置来尊重在工作目录中找到的vimrc文件吗?

vim directory configuration vimrc

5
推荐指数
1
解决办法
1339
查看次数

内核 /proc ipv6 设置优先级

我即将将我们的网络连接到 IPv6 Internet,并且需要控制在 下找到的内核 ipv6 设置/proc。我知道每个接口都有配置,all接口和default配置。我的问题是:如果各个值相互矛盾,哪些设置会获胜?虽然我能够找到有关各个设置的良好文档,但我不知道设置优先级...

有一个关于 IPv4相关问题,但主要讲的是 的区别alldefault以及各个接口。从中我收集到具体的设置总是以某种方式在逻辑上结合起来。但是,对我来说最重要的字段(请参阅以下示例)并未涵盖,而且 IPv6 的实现方式似乎有所不同,因此参考答案中引用的内核源文件对我的 IPv6 问题和以下示例没有帮助。

几个例子:

cat /proc/sys/net/ipv6/conf/all/accept_ra
0
cat /proc/sys/net/ipv6/conf/eth1/accept_ra
1
Run Code Online (Sandbox Code Playgroud)

eth1 会接受路由器广告吗?

cat /proc/sys/net/ipv6/conf/all/forwarding
1
cat /proc/sys/net/ipv6/conf/eth1/forwarding
0
cat /proc/sys/net/ipv6/conf/eth1/accept_ra
1
Run Code Online (Sandbox Code Playgroud)

eth1 会接受路由器广告吗?

cat /proc/sys/net/ipv6/conf/all/disable_ipv6
1
cat /proc/sys/net/ipv6/conf/all/accept_ra
1
cat /proc/sys/net/ipv6/conf/eth1/disable_ipv6
0
cat /proc/sys/net/ipv6/conf/all/accept_ra
0
Run Code Online (Sandbox Code Playgroud)

eth1 会接受路由器广告吗?

cat /proc/sys/net/ipv6/conf/all/disable_ipv6
1
cat /proc/sys/net/ipv6/conf/all/fowarding
1
cat /proc/sys/net/ipv6/conf/eth1/disable_ipv6
0
cat /proc/sys/net/ipv6/conf/all/accept_ra
1
Run Code Online (Sandbox Code Playgroud)

eth1 会接受路由器广告吗?

proc ipv6 linux-kernel

5
推荐指数
1
解决办法
2075
查看次数

限制 jq 的输出深度

我想使用jq. 为此,我想限制jq下降到文档的深度,只显示第一个n级别,例如 3 个级别。

假设我有以下 JSON 文档:

{
    "a": {
        "b": {
            "c": {
                "d": {
                    "e": "foo"
                }
            }
        }
    },
    "f": {
        "g": {
            "h": {
                "i": {
                    "j": "bar"
                }
            }
        }
    },
    "k": {
        "l": {
            "m": {
                "n": {
                    "o": "baz"
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我期待结果

{
    "a": {
        "b": {
            "c": {}
        }
    },
    "f": {
        "g": {
            "h": {}
        }
    },
    "k": {
        "l": {
            "m": …
Run Code Online (Sandbox Code Playgroud)

json jq

5
推荐指数
2
解决办法
1501
查看次数

为什么这里使用 Bash 的 Makefile 中的字符串不起作用?

我刚刚用我的 Makefile(s) 解决了一个问题。<<<使用错误消息遍历每个

/bin/sh: 1: Syntax error: redirection unexpected
Run Code Online (Sandbox Code Playgroud)

我想知道为什么。(我使用 Bash 作为SHELL

在我目前的项目中,我尝试了很多食谱:

target:
    read FOO <<< "XXX"; \
    read BAR <<< "YYY"; \
    read BAZ <<< "ZZZ"; \
    someprog -a param0 -b $$FOO -c param1 -d $${BAR} -e param2 -f $${BAZ} >$@
Run Code Online (Sandbox Code Playgroud)

尝试此操作将导致<<<如开头所述的每个错误。我的解决方法是

target.dep:
    echo "XXX YYY ZZZ" >$@

target: %: %.dep
    read FOO BAR BAZ < $<;\
    someprog -a param0 -b $$FOO -c param1 -d $${BAR} -e param2 -f $${BAZ} >$@
Run Code Online (Sandbox Code Playgroud)

这意味着我将我的东西放入临时文件中,然后我用 …

bash make gnu-make

2
推荐指数
1
解决办法
1476
查看次数