在我的管理工作期间,我需要登录到几个远程 ssh 服务器。我使用三台不同的计算机客户端,它们都是 Debian GNU/Linux 系统。我保留了一个工作区目录,用于放置我完成工作所需的所有内容,该目录包含一个bashrc
文件和一个ssh_config
文件等。
rsync
当我移动并开始使用不同的客户端时,我使用脚本手动同步该目录内容,该脚本从一台客户端计算机使用到另一台客户端计算机。
这三个客户端中的每一个上的本地用户都需要最少的配置,因此如果我需要创建一个新的本地用户或重新安装一个客户端,我只需要rsync
到工作区并workspace/bashrc
在真实用户的$HOME/.bashrc
. 我的自定义workspace/bashrc
创建了几个别名,无论我使用什么客户端,我都会得到我通常的环境。
我的自定义workspace/bashrc
创建别名以这种方式连接到远程服务器:
alias s1='ssh -F ~/workspace/etc/ssh_config server1.example.com'
Run Code Online (Sandbox Code Playgroud)
并且我只需s1
在任何客户端的终端中键入即可登录 server1 ,因为我的自定义ssh_config
设置了所需的公钥身份验证选项、正确的端口 server1 正在侦听和正确的用户。
现在这就像一个魅力,只要ssh
命令是我需要的。不幸的是,一旦我需要另一个使用 的命令ssh
,事情就会变得更加混乱。
例如,如果我需要对rsync
其中一台服务器进行任何操作,我将不得不编写整个 ssh 命令:
rsync -Pavz --delete -e "ssh -F $HOME/workspace/etc/ssh_config" ...
Run Code Online (Sandbox Code Playgroud)
类似的事情发生在其他命令上,例如scp
,ssh-copy-id
和其他命令。
我希望能够写
rsync -Pavz --delete -e "ssh" ...
Run Code Online (Sandbox Code Playgroud)
相反,并让 ssh 从环境变量中获取它的配置文件名,以便我可以在我的bashrc
每次ssh
调用中设置该环境变量,并且每次调用都会自动工作。
是否有这样的环境变量或问题有不同的解决方案?
我有两个 Debian GNU/Linux 系统(bullseye/sid),都在端口 23456 上运行wireguard,都在 NAT 之后。两者都运行内核版本 > 5.6(Wireguard 主线)。
系统 A 是服务器,它动态更新其 Internet 域的权威名称服务器中的专用“A 记录”,并为其面向 Internet 的路由器 A(ZyWALL USG 100 防火墙)分配了正确的公共 IP 地址。它每分钟执行一次,但公共 IP 地址实际上仅在路由器/防火墙重新启动时更改,这基本上不会发生。
系统 B 位于 VDSL 路由器 B 后面,它充当有线保护客户端,指向动态更新的“A 记录”和端口 33456。路由器 B 是消费级 VDSL 路由器,它允许出站方向的所有内容,仅回复入站。
路由器/防火墙 A (ZyWALL USG 100) 被配置为允许端口 23456 上的 UDP 数据包通过它并将它们转发到服务器 A。这是相关的配置屏幕:
这是服务器 A 线保护配置文件(此代码段中的密钥尽管有效,但不是真实的):
[Interface]
Address = 10.31.33.100/24, fc00:31:33::1/64
ListenPort = 23456
PrivateKey = iJE/5Qy4uO55uUQg8nnDKQ/dFT1MEq+tDfFXrGNj3GY=
# PreUp = iptables -t nat -A POSTROUTING -s 10.31.33.0/24 -o enp1s0 -j MASQUERADE; ip6tables …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将 Nginx 配置为缓存反向代理。源服务器是 Apache,它托管一个 WordPress 实例,如果这很重要的话。
反向代理功能按预期工作,但缓存似乎不起作用。如果我连续两次获得相同的静态资源,我就会获得x-proxy-cache: MISS
两次。
assodigitale.it 是域,138.201.87.123 是源服务器 IP 地址,138.201.87.124 是 Nginx 代理 IP 地址。
源服务器似乎回复允许代理缓存资源:
$ curl --connect-to ::138.201.87.123:443 --http2 -I https://assodigitale.it/wp-content/uploads/2018/03/aereo.jpg
HTTP/2 200
date: Sun, 11 Mar 2018 20:59:39 GMT
server: Apache/2.4.25 (Debian)
content-length: 32989
strict-transport-security: max-age=31536000; includeSubdomains; preload
last-modified: Wed, 07 Mar 2018 09:34:41 GMT
etag: "80dd-566cf44ca2952"
accept-ranges: bytes
vary: Accept-Encoding
cache-control: max-age=1209600, public
x-content-type-options: nosniff
content-type: image/jpeg
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,对代理服务器的第一个请求会导致 MISS:
$ curl --connect-to ::138.201.87.124:443 --http2 -I https://assodigitale.it/wp-content/uploads/2018/03/aereo.jpg
HTTP/2 200
server: nginx/1.13.9
date: …
Run Code Online (Sandbox Code Playgroud)