我知道有一个名为的参数ip可让您通过引导加载程序在 Linux 内核上配置 IPv4 地址。如下所示:
ip=192.0.2.1::192.0.2.62:255.255.255.192::eth0:none
Run Code Online (Sandbox Code Playgroud)
我正在为 IPv6 配置寻找一个相等的参数。我在内核文档中找不到任何关于此的信息。
更新:因为很多人问我为什么需要这个:使用内核配置的想法与这个问题有关。我怀疑常规的启动界面配置没有完成,因为接口已经启动了。这样做的原因可能是我正在使用带有 Dropbear SSH 服务器的预引导环境来解锁我的加密根分区。此环境的 IP 地址是通过 GRUB 使用ip=参数配置的。该以太网段上没有可用的 DHCP 或路由器广告,而且由于这是大型托管公司提供的上行链路段,因此无法改变这一事实。
有时我想使用 Ansiblelineinfile或blockinfile模块将密码写入一些配置文件。如果我这样做,整个行或块,包括密码,最终在我的syslog.
由于我不认为syslog将密码存储在一个安全的地方,我如何告诉 Ansible 不要将我的密码泄露到syslog?我希望有办法做到这一点,否则我会认为这是 Ansible 中的一个大安全问题。
例如,您可以使用此临时命令重现它:
ansible localhost -m blockinfile -a 'dest=/tmp/ansible_password_leak create=yes block="Password = {{password}}"' -e 'password=secret'
Run Code Online (Sandbox Code Playgroud)
以下是最终结果syslog:
ansible-blockinfile: Invoked with directory_mode=None force=None remote_src=None insertafter=None owner=None follow=False marker=# {mark} ANSIBLE MANAGED BLOCK group=None insertbefore=None create=True setype=None content=None serole=None state=present dest=/tmp/ansible_password_leak selevel=None regexp=None validate=None src=None seuser=None delimiter=None mode=None backup=False block=Password = secret
Run Code Online (Sandbox Code Playgroud)
例如,我在 Debian“Jessie”8 系统上使用了来自官方 Ansible Ubuntu PPA 的Ansible 2.0.0.2 。
我刚刚发现了 OpenSSH 的 ControlMaster/ControlPath 功能,它允许您使用单个 SSH 连接来运行多个终端。
由于我经常使用 SSH 来使用端口转发来获得加密和经过身份验证的 VNC 会话,我立即意识到您无法将端口转发添加到已经建立连接的远程服务器。这很糟糕。
有时后来我发现您可以通过在正在运行的 SSH 终端会话中键入 ~C 来规避此限制。这将打开一个命令行,允许您添加或删除端口转发。
我现在的问题是:如何在使用 ControlMaster/ControlPath 功能的现有 SSH 会话上添加端口转发,而无需访问该 SSH 会话中的终端会话。我需要这个来启用我的脚本,该脚本启动一个安全的隧道 VNC 连接,以便我添加并稍后删除其端口转发。
(我知道我可以使用终端多路复用器,例如 GNU Screen 或 tmux,实际上我已经在这样做了。但出于多种原因,我喜欢只使用一个 SSH 会话的想法。)
最近我经常使用 SSH 客户端的 ControlMaster 功能,它允许我使用单个 SSH-TCP 连接进行多个 shell 和端口转发到同一个远程系统。最烦人的是,打开的第一个 shell 进程自动成为 ControlMaster。这意味着,如果此进程终止,则使用控制主连接的所有其他 shell 和端口转发将变得不可用。
我真的很想当远程系统的第一个 ssh 命令会产生一个额外的后台进程时,只要仍然有使用 ControlMaster 连接的连接,它就会保持连接,这样我就可以简单地关闭实际的 shell,而不必冒其他崩溃的风险连接。理想情况下,后台 ControlMaster 进程甚至可以配置为在最终关闭之前等待新 shell 或端口转发使用 ControlMaster 的时间。
有没有办法让ssh客户端做这样的事情?我知道我可以在使用 ssh 创建第一个 shell 之前手动创建这样的连接,但我明确希望这会自动发生,否则我肯定会时不时忘记这样做。
让包装脚本来做这件事也不是那么容易,因为我经常在 .ssh/config 中使用配置的远程服务器名称的简写,而 ControlMaster 套接字是使用 USERNAME@NETWORK_NAME:NETWORK_PORT 作为名称创建的。因此,包装器需要完全理解 .config/ssh 才能按预期工作。
我发现了一个 Mumble 服务器的性能问题,我在上一个问题中描述了它是由未知来源的 I/O 延迟问题引起的。由于我不知道是什么导致了这种情况以及如何进一步调试它,因此我在询问您对这个主题的想法。
我正在运行Hetzner EX4S 根服务器作为 KVM 管理程序。该服务器运行 Debian Wheezy Beta 4,并通过 LibVirt 使用 KVM 虚拟化。
服务器有两个不同的 3TB 硬盘,因为在报告 SMART 错误后更换了其中一个硬盘。第一个硬盘是 Seagate Barracuda XT ST33000651AS(512 字节逻辑,4096 字节物理扇区大小),另一个是 Seagate Barracuda 7200.14 (AF) ST3000DM001-9YN166(512 字节逻辑和物理扇区大小)。有两个 Linux 软件 RAID1 设备。一个用于未加密的引导分区,另一个用作加密其余部分的容器,使用两个硬盘驱动器。
后一个 RAID 设备内部有一个 AES 加密的 LUKS 容器。在 LUKS 容器内有一个 LVM 物理卷。虚拟机管理程序的 VFS 在描述的 LVM 物理卷上分为三个逻辑卷:一个用于 /,一个用于 /home,一个用于交换。
下面是块设备配置栈的示意图:
sda (Physical HDD)
- md0 (RAID1)
- md1 (RAID1)
sdb (Physical HDD)
- md0 (RAID1)
- md1 …Run Code Online (Sandbox Code Playgroud) 使用以下命令,您可以在 Linux 中添加邻居代理
ip -6 neigh add proxy 2001:db8:100:3022:1::4 dev eth0
Run Code Online (Sandbox Code Playgroud)
有没有办法列出已经定义的代理?
由于OpenSSH的5.4有一个叫natcat模式的新功能,它允许你绑定STDIN和STDOUT本地SSH客户端通过远程SSH服务器访问的TCP端口。只需调用即可启用此模式ssh -W [HOST]:[PORT]
从理论上讲,这应该非常适合用于ProxyCommand每主机 SSH 配置中的设置,以前经常与nc(netcat) 命令一起使用。ProxyCommand允许您将机器配置为本地机器和目标 SSH 服务器之间的代理,例如,如果目标 SSH 服务器隐藏在防火墙后面。
现在的问题是,它没有工作,而是在我面前抛出一条神秘的错误消息:
Bad packet length 1397966893.
Disconnecting: Packet corrupt
Run Code Online (Sandbox Code Playgroud)
这是我的摘录~/.ssh/config:
Host *
Protocol 2
ControlMaster auto
ControlPath ~/.ssh/cm_socket/%r@%h:%p
ControlPersist 4h
Host proxy-host proxy-host.my-domain.tld
HostName proxy-host.my-domain.tld
ForwardAgent yes
Host target-server target-server.my-domain.tld
HostName target-server.my-domain.tld
ProxyCommand ssh -W %h:%p proxy-host
ForwardAgent yes
Run Code Online (Sandbox Code Playgroud)
正如您在此处看到的,我正在使用 ControlMaster 功能,因此我不必为每台主机打开一个以上的 SSH 连接。
我测试的客户端机器是 Ubuntu 11.10 (x86_64),代理主机和目标服务器都是 Debian Wheezy Beta 3 (x86_64) 机器。
当我调用ssh target-server …
不久前,我得到了一个答案,告诉我如何在正在运行的 SSH ControlMaster 进程上添加端口转发。要知道这有很大帮助,但是在我不再需要之后,我仍然缺少删除此类端口转发的方法。
据我所知,您可以通过正常连接上的内部命令键序列来执行此操作,这似乎对 ControlMaster 客户端禁用。即使这是可能的,我也需要一个可以用脚本自动化的解决方案,这肯定不是那么容易。
有没有办法做到这一点?它是否易于自动化?
ssh ×4
linux ×3
security ×3
ipv6 ×2
multiplexing ×2
ansible ×1
boot-loader ×1
io ×1
luks ×1
networking ×1
password ×1
proxy ×1
syslog ×1
vnc ×1