首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ssh多跳上出现"bash: nc: command not found“错误

在ssh多跳上出现"bash: nc: command not found“错误
EN

Stack Overflow用户
提问于 2015-09-22 12:55:17
回答 1查看 45.9K关注 0票数 15

环境: Ubuntu 14.04。

当我对ssh多跃点使用no-root帐户时,这是可以的。

但是当我切换到根账号(通过$sudo -i)时,ssh多跳不起作用,它总是给出错误"bash: nc: command not found",而且/bin/nc肯定在那里!

非常奇怪。有谁有什么建议吗?

多跳ssh配置如下所示:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-22 13:07:39

从这么远的距离很难准确地判断出您的问题是什么,但这可能与您在"serverA“上的shell环境中未设置或正确设置路径有关。

我最初的建议是用它的完整路径指定nc的位置。

代码语言:javascript
复制
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条目:

代码语言:javascript
复制
# 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获得该访问权限。以正确的方式做事情从来都不是一个坏主意。:)

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32708649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档