运维系列【仅供参考】:SSH 命令的三种代理功能(-L/-R/-D)

484 篇文章 ¥129.90 ¥299.90




SSH 命令的三种代理功能(-L/-R/-D)

ssh 命令除了登陆外还有三种代理功能:

  • 正向代理(-L):相当于 iptable 的 port forwarding

  • 反向代理(-R):相当于 frp 或者 ngrok

  • socks5 代理(-D):相当于 ss/ssr

如要长期高效的服务,应使用对应的专用软件。如没法安装软件,比如当你处在限制环境下想要访问下某个不可达到的目标,或者某个临时需求,那么 ssh 就是你的兜底方案。

正向代理:

所谓“正向代理”就是在本地启动端口,把本地端口数据转发到远端。

用法1:远程端口映射到其他机器

HostB 上启动一个 PortB 端口,映射到 HostC:PortC 上,在 HostB 上运行:

HostB$ ssh -L 0.0.0.0:PortB
serAdmin@MacBook-Pro ~ % ssh-keygen -R ssh-keygen: option requires an argument -- R usage: ssh-keygen [-q] [-a rounds] [-b bits] [-C comment] [-f output_keyfile] [-m format] [-N new_passphrase] [-O option] [-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa] [-w provider] [-Z cipher] ssh-keygen -p [-a rounds] [-f keyfile] [-m format] [-N new_passphrase] [-P old_passphrase] [-Z cipher] ssh-keygen -i [-f input_keyfile] [-m key_format] ssh-keygen -e [-f input_keyfile] [-m key_format] ssh-keygen -y [-f input_keyfile] ssh-keygen -c [-a rounds] [-C comment] [-f keyfile] [-P passphrase] ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile] ssh-keygen -B [-f input_keyfile] ssh-keygen -D pkcs11 ssh-keygen -F hostname [-lv] [-f known_hosts_file] ssh-keygen -H [-f known_hosts_file] ssh-keygen -K [-a rounds] [-w provider] ssh-keygen -R hostname [-f known_hosts_file] ssh-keygen -r hostname [-g] [-f input_keyfile] ssh-keygen -M generate [-O option] output_file ssh-keygen -M screen [-f input_file] [-O option] output_file ssh-keygen -I certificate_identity -s ca_key [-hU] [-D pkcs11_provider] [-n principals] [-O option] [-V validity_interval] [-z serial_number] file ... ssh-keygen -L [-f input_keyfile] ssh-keygen -A [-a rounds] [-f prefix_path] ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number] file ... ssh-keygen -Q [-l] -f krl_file [file ...] ssh-keygen -Y find-principals -s signature_file -f allowed_signers_file ssh-keygen -Y match-principals -I signer_identity -f allowed_signers_file ssh-keygen -Y check-novalidate -n namespace -s signature_file ssh-keygen -Y sign -f key_file -n namespace file [-O option] ... ssh-keygen -Y verify -f allowed_signers_file -I signer_identity -n namespace -s signature_file [-r krl_file] [-O option] UserAdmin@MacBook-Pro ~ %
07-13
### 正确使用 `ssh-keygen -R` 命令从 `known_hosts` 中移除主机密钥 在 SSH 连接过程中,若远程主机的公钥发生变化,而本地 `~/.ssh/known_hosts` 文件中仍保留旧密钥,则会触发“Host key verification failed”错误。为了解决该问题,可以使用 `ssh-keygen -R` 命令清除目标主机的旧密钥记录。 #### 语法与用法 命令的基本格式如下: ```bash ssh-keygen -R hostname [-f known_hosts_file] ``` 其中: - `hostname` 是要删除的远程主机名或 IP 地址。 - 可选参数 `-f` 指定 `known_hosts` 文件的路径,默认为当前用户的 `~/.ssh/known_hosts` [^1]。 例如,若需删除 IP 地址为 `192.168.3.14` 的主机记录,可执行以下命令: ```bash ssh-keygen -R 192.168.3.14 ``` 此操作将从默认的 `known_hosts` 文件中删除所有与指定主机相关的密钥条目,并生成一个备份文件(如 `/Users/用户名/.ssh/known_hosts.old`)[^2]。 #### 特殊情况处理 如果目标主机配置了非标准端口(如 5520),则需要在 IP 地址后添加端口号并用方括号包裹: ```bash ssh-keygen -R "[192.168.1.10]:5520" -f /Users/m1/.ssh/known_hosts ``` 该命令将从指定的 `known_hosts` 文件中移除带有特定端口号的主机密钥记录 [^1]。 #### 验证操作结果 执行完上述命令后,可尝试重新连接目标主机: ```bash ssh username@192.168.3.14 ``` 此时系统会提示用户是否接受新的主机密钥,输入 `yes` 即可完成信任操作,并将新密钥写入 `known_hosts` 文件 [^3]。 #### 注意事项 - 删除密钥前,请确保了解目标主机的身份变更原因,以避免潜在的安全风险(如中间人攻击)。 - 若频繁出现密钥变更的情况,建议定期清理 `known_hosts` 文件或采用自动化脚本进行维护。 - 在多用户环境中,应确保每个用户的 `.ssh/known_hosts` 文件保持同步,防止因密钥不一致导致连接失败 [^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坦笑&&life

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值