Linux 命令和 Shell 技能
ssh:运行基础设施的连接
ssh 不是一种便利,它是每台服务器上的每个操作都依赖的传输,而 ~/.ssh/config 是与你未来的自己在凌晨 3 点签订的合同。主机别名、IdentityFile 条目、ProxyJump 目标和 keepalive 设置将记住的标志语句变成单字命令。隧道(-L、-R、-D)和 ControlMaster 多路复用将“外壳”转变为基础设施命令界面,并且两者都是配置文件工作,而不是内存工作。
要点
- 将所有内容放入 ~/.ssh/config 中:主机别名包含 User、IdentityFile、IdentitiesOnly yes,ProxyJump 使 'ssh prod-web1' 成为一个单词;每天输入五次相同的标志语句是缺少的配置条目。
- 密钥是唯一的游戏:ssh-keygen -t ed25519 -C 'role@team',公共一半为authorized_keys,一旦轮换实际证明有效,服务器上的PasswordAuthentication就不会。
- 跳转主机折叠成一个标志:ssh -J bastion.corp 内部主机,或 Host 块中的 ProxyJump bastion.corp;旧的 ProxyCommand 咒语仍然有效,并且不再是任何人的工作。
- 隧道是按用途划分的: -L 5432:db.internal:5432 到达数据库,-D 1080 作为通过严格网络的 SOCKS 填充程序,-R 公开本地开发框,每个隧道都绑定到本地主机,除非您明确扩大它。
- ControlMaster 多路复用(ControlMaster auto、ControlPath ~/.ssh/cm-%r@%h:%p、ControlPersist 10m)会在每次打开时停止重新运行握手,并使多窗口在一台主机上即时工作。
- Keepalives 通过 NAT 和空闲防火墙丢弃保持会话:ServerAliveInterval 60 加上 ServerAliveCountMax 3 客户端在大多数情况下击败了神秘的“会话在 4 分钟内死亡”报告。
- 限制危险访问:-N(无远程命令)用于纯端口转发,-n 用于从标准输入读取批处理作业,以及fail2ban 加上健全的 MaxAuthTries,因此暴力破解会死在日志而不是帐户中。
- 调试顺序很重要:ssh -vvv 按该顺序显示配置解析、身份验证协商和通道失败,并且 -G 主机转储回答“为什么它选择该密钥和该用户”而不接触服务器。
一线手记
我曾经在新密钥实际进入authorized_keys之前禁用了PasswordAuthentication,并将我自己的团队锁在外面一个晚上。现在的仪式是:第二个会话打开,关键已验证工作,并且配置中的 ServerAliveInterval 以便空闲的堡垒 NAT 丢弃停止终止会话。
常见问题
各一句话:-L、-R、-D?
-L 将本地端口转发到远程服务,-R 将远程端口推回您的计算机(确切地知道您暴露的内容),-D 通过连接打开动态 SOCKS 代理。
我的会话在闲置几分钟后中断。使固定?
NAT 或防火墙上的空闲超时是常见原因:在客户端上设置 ServerAliveInterval(并在服务器上保持 TCPKeepAlive 正常);相同的修复属于您用于地下室堡垒跳跃的配置。
ssh-agent 或无密码密钥?
代理,始终:它保存每个会话的解密密钥,因此密钥保留密码并且自动化保持非交互式;在受信任的堡垒上使用 ForwardAgent yes 就可以了,并且 ssh-add -l 会告诉您在对自己撒谎之前加载了什么。
如何停止重新输入隧道规范?
Host 块内的 LocalForward 和 RemoteForward 行: 'ssh dbtunnel' 然后执行整个操作;每个目的一个条目可以保持文件的可读性,并让审计人员准确地了解谁转发了哪些内容。
Kinetikatech 如何在linux 命令和 shell 技能方面为您提供帮助
情况就是这样:决定管理员是操作服务器还是对抗服务器的命令和脚本编写习惯:使用每个基本安装中的工具搜索、转换、传输和监督文本和进程。交给我们的Linux 服务器安全和服务器管理服务即可全程覆盖:规范评估、干净实施、全天候监控。