当前位置:  开发笔记 > 编程语言 > 正文

ssh proxycommand -W,nc,exec nc之间的区别是什么?

如何解决《sshproxycommand-W,nc,execnc之间的区别是什么?》经验,为你挑选了1个好方法。

我见过一些关于.ssh/config和的博客 proxycommand

现在下一个命令有什么区别

ProxyCommand ssh proxyserver -W [%h]:%p

ProxyCommand ssh proxyserver nc -q0 %h %p 2> /dev/null

ProxyCommand ssh proxyserver exec nc -q0 %h %p 2> /dev/null

其中一些命令适用于某些机器,而不适用于其他机器.



1> aDroid..:

这是我理解的方式:


    ProxyCommand ssh proxyserver -W [%h]:%p

    -W选项内置于OpenSSH的新(呃)版本中,因此这仅适用于具有最低版本的机器(5.4,除非您的发行版后端移植任何功能;例如,RHEL6 OpenSSH 5.3p1包含此功能).根据发行说明:http://www.openssh.com/txt/release-5.4

    为ssh(1)添加了'netcat模式':"ssh -W host:port ..."这将客户端上的stdio连接到服务器上的单个端口.例如,这允许使用ssh作为ProxyCommand来通过中间服务器路由连接.

    ProxyCommand ssh proxyserver nc -q0 %h %p 2> /dev/null

    在该-W选项可用之前,我们使用了nc(或netcat)实用程序.nc允许您将TCP和UDP数据包转发到指定(备用)位置,并且基本上与ssh -W(与ssh -W之后建模nc)相同.为了使这种变化起作用,中间主机需要nc安装,并且AllowTcpForwarding必须在主机的sshd_config中启用该选项(默认值:yes).该选项-q0nc进行(应该是)为平息的错误,但我不能找到这个被引入哪个版本.(注意:2> /dev/null可能是相当ssh错误,但可以使用ssh -q.)

    ProxyCommand ssh proxyserver exec nc -q0 %h %p 2> /dev/null

    除了你调用shell的内置函数之外,这与第二个变体非常相似exec.我不知道,但我相信这是包括或不包括没有区别execProxyCommand; 这种变化应该在上述变化的任何地方起作用.例如,Bash手册说的是这样的:

    exec [-cl] [-a name] [command [arguments]]

    如果指定了command,则替换shell.没有创建新进程.参数成为命令的参数.如果提供了-l选项,则shell会在传递给command的第0个参数的开头放置一个破折号.这是login(1)的作用.-c选项导致在空环境中执行命令.如果提供了-a,则shell将name作为第0个参数传递给执行的命令.如果由于某种原因无法执行命令,则会退出非交互式shell,除非启用了shell选项execfail,在这种情况下它将返回失败.如果无法执行文件,则交互式shell将返回失败.如果未指定command,则任何重定向在当前shell中生效,返回状态为0.如果存在重定向错误,则返回状态为1.


`exec`结束shell并用`nc`进程替换它,而不是在子进程中运行`nc`.这是一个很好的做法,因为在那一点上不需要shell,并且进程树整齐而没有链中不必要的shell,但它不应该影响服务器跳转是否有效.在某些情况下,就像在主管中运行服务一样,信令正常工作至关重要,但这不是一个因素.
现在,还有“ ProxyJump”选项,可以进一步简化它!
推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有