环境: Ubuntu 14.04。
当我对ssh多跃点使用no-root帐户时,这是可以的。
但是当我切换到根账号(通过$sudo -i)时,ssh多跳不起作用,它总是给出错误"bash: nc: command not found",而且/bin/nc肯定在那里!
非常奇怪。有谁有什么建议吗?
多跳ssh配置如下所示:
cat ~/.ssh/config
# Multi-Hop SSH
Host serverA
HostName serverA.abc.net
# Multi-Hop SSH
Host sha
ProxyCommand ssh -q serverA nc sha.abc.net 22发布于 2015-09-22 13:07:39
从这么远的距离很难准确地判断出您的问题是什么,但这可能与您在"serverA“上的shell环境中未设置或正确设置路径有关。
我最初的建议是用它的完整路径指定nc的位置。
ProxyCommand ssh -q serverA /bin/nc sha.example.net 22只需记住,为了可移植性,并不是所有系统上的nc都位于此位置。例如,它在FreeBSD和OSX上的/usr/bin/nc上。
我不记得Ubuntu14.04中包含了什么版本的OpenSSH,但如果它足够新(即SSH5.4或更高版本),您可以将nc命令替换为ssh的内部-W选项,该选项指示ssh在"netcat模式“下运行。我将用以下内容替换您的~/.ssh/config条目:
# gateway host
host serverA
hostname serverA.example.net
host sha
proxycommand ssh -xaqW%h:22 serverA请注意,我还包含了-x和-a来禁用X11转发和代理身份验证。
至于您关于以根用户身份执行此操作的问题,我建议您不要使用ssh作为根用户。在服务器或客户端上。确认在sshd_config文件(在/etc/或/etc/ssh/中)中设置了PermitRootLogin no,并且仅作为非特权用户进行身份验证。在客户端站点上,将您的自动化构建为非特权用户,如果他们需要访问远程系统上的某些root帐户,则可以使用sudo获得该访问权限。以正确的方式做事情从来都不是一个坏主意。:)
https://stackoverflow.com/questions/32708649
复制相似问题