我想要获取 SFTP 服务器的主机密钥。
但是,我和 SFTP 服务器之间有一个经过身份验证的代理。我有关于该代理的以下详细信息:proxy_host
、和proxy_port
。proxy_user
proxy_password
我如何使用ssh-keyscan
/ssh
超越经过身份验证的代理?
我在我的 oracle linux 8 VM 中安装了 openssh-client 和 netcat。
我不想使用像 proxytunnel 或 corkscrew 这样的工具。
我想要获取 SFTP 服务器的主机密钥。
但是,我和 SFTP 服务器之间有一个经过身份验证的代理。我有关于该代理的以下详细信息:proxy_host
、和proxy_port
。proxy_user
proxy_password
我如何使用ssh-keyscan
/ssh
超越经过身份验证的代理?
我在我的 oracle linux 8 VM 中安装了 openssh-client 和 netcat。
我不想使用像 proxytunnel 或 corkscrew 这样的工具。
既然您提到了 proxytunnel 和 corkscrew,听起来它是一个 HTTP‘CONNECT’代理。
OpenSSH本身不支持使用任何类型的代理,无论是 HTTP CONNECT 还是其他;它依赖于某种外部工具(带有
ProxyCommand
)。一些
nc
实现内置了 HTTP 代理支持,例如openbsd-netcat有-x
该选项:如果您有不同的
nc
,您需要编写一个 shell 脚本来手动发送 CONNECT 请求,它看起来像:对于
Basic
身份验证,数据是 Base64 编码的proxy_user:proxy_pass
。该脚本可能如下所示:
并且脚本将被调用为
ssh -o ProxyCommand="~/myscript %h %p"
。(这正是 proxytunnel 所做的,所以...为了通过 HTTP 代理进行 SSH,您将不可避免地使用“像 proxytunnel 或 corkscrew 这样的工具”。)
ssh-keyscan
不支持,但您可以通过运行(使用不同的)并让它将密钥保存到您的中ProxyCommand
来实现类似的结果。ssh
-o HostKeyAlgorithms=
known_hosts