blu*_*ast 7 linux firewall ssh bash proxy
这是我的场景:
~/.ssh/id_rsa.pub(来自 A)authorized_keys~/.ssh/id_rsa),因为它存在安全风险(密钥是个人的)。如何使用主机 A 中的密钥登录主机 C?这可能吗?我怕不是。
(与此问题类似但不同)
我需要的是一种在不接触 B 中的文件系统的情况下,即时(stdin 或类似)向 B 中的 ssh 跃点提供私钥的方法。这可能吗?
如果您使用的是最新版本的 OpenSSH,您只需输入:
ssh -J B C
Run Code Online (Sandbox Code Playgroud)
如果您使用的是没有-J支持的稍旧版本,您可以使用更复杂的语法:
ssh -o ProxyCommand='ssh -W %h:%p B' C
Run Code Online (Sandbox Code Playgroud)
如果每次从 A ssh 到 C 时都需要这个,在.ssh/config文件中添加一个看起来像这样的条目会很有用(在最近的版本中):
Host C
ProxyJump B
Run Code Online (Sandbox Code Playgroud)
或者像这样(在稍旧的版本中):
Host C
ProxyCommand ssh -W %h:%p B
Run Code Online (Sandbox Code Playgroud)
使用上述任一方法,您只需键入ssh C即可打开连接。当您ssh通过ssh用于传输的众多工具之一间接使用时,这特别有用。并非所有这些工具都提供了将命令行标志传递给命令的直接方法ssh。
小智 0
这相当容易。只需使用代理转发(ssh 上的 -A 选项)。
样本:
#On machine A use
ssh -A user@<machine_B>
#Then on machine B use
ssh -A user@<machine_C>
Run Code Online (Sandbox Code Playgroud)
无需到处复制私钥。-A 仅将任何 SSH 代理请求转发到链中的第一台计算机,因此只要不在中间计算机上切换用户,就可以使用计算机 A 上的私钥。
如果您更改机器 B 上的用户(例如使用 su foo 更改为用户 foo),则代理转发将不再起作用,因为下一个连接将作为用户 foo 使用其自己的密钥完成。
| 归档时间: |
|
| 查看次数: |
4647 次 |
| 最近记录: |