SSH通过代理连接服务器
像往常一样,我们先说结论:或者:注意。
由于macOS版本7.90和7.91Ncat中的错误,上述方法不再有效。
至少7.91版本无法在macOS10.15.7上运行。
此问题在7.92版本中已得到解决。
具体原因参见:https://nmap.org/changelog.html。
但在Linux下就没有问题。
所以又增加了socat的一个替代解决方案:Scout本身很强大,但是它的代理支持似乎很差。
它仅支持SOCKSv4和HTTPProxy,但不支持SOCKS5。
有关更多信息,请参阅Socat初探。
有时由于网络限制等原因,无法通过SSH直接连接指定服务器,需要通过代理连接。
例如以下场景:client.net无法直接访问server.netclient.net可以访问proxy.netproxy.net可以访问server.net使用ProxyCommandSSH选项并与nc/Ncat命令交互来实现客户端。
.net通过proxy.net,通过SSH访问server.net。
(1)该方案在ncmacOS上常用。
但nc不支持需要身份验证的代理。
常用选项:(2)在macOS上通过代理服务器连接时,NcatNcat将被禁用。
常用参数:以nc为例。
如果您使用的是Ncat,您可以自行更换。
默认使用Socket5代理。
此时,可以省略-X参数,或者使用另一种写法:SSH配置文件位置:添加以下两行:以nc为例。
如果您使用的是Ncat,则可以替换它。
我。
使用配置文件后,无需在命令行中配置代理。
大多数情况下,可以直接使用nc或Ncat来解决这个问题。
但在一些困难的情况下,可以使用其他解决方案。
例如,如果您想通过需要在macOS上进行身份验证的代理进行连接,则nc不支持代理身份验证,并且Ncat存在一些问题。
如果代理类型有问题,可以通过Brook完成类型转换。
1.Corkscrew仅支持HTTP代理。
如果您需要通过身份验证访问代理服务器:~/.ssh/myauth的内容:2.proxytunnel仅支持HTTP代理。
只需在命令行中输入您的用户名即可完成。
系统将提示您输入密码或通过Enter环境变量传递密码。
(超过)
ssh远程连接服务器执行命令
首先,我们将解释如何使用ssh远程连接到服务器并执行命令。
这里为了方便说明,我们称测试服务器为A1,目标服务器为A2,可以直接登录A2,配置如下:成功的!说说问题,ssh远程连接服务器运行命令时,经常会出现环境变量的问题,比如:如果看到上面的提示,说明你的环境变量配置有问题。
先说说解决办法吧!这就说明bash有两种方式:交互+loginshell模式和非交互+nonloginshell模式。
使用交互+loginshell模式在服务器上运行命令,或者使用非交互模式通过远程登录运行命令。
使用登录shell模式而不是Interactive+模式。
两种读取环境变量的方式存在差异。
shell首先加载/etc/profile文件,然后尝试按顺序加载以下三个配置文件之一:如果找到其中之一,它将不会进一步搜索:~/.bash_profile~/.bash_login~/.profile因此,当远程运行时,发出命令时,它会混合~/.bashrc文件中的环境变量您所要做的就是使它们匹配!另请参阅:如何解决SSH远程执行命令未找到环境变量的问题