我面临上述问题之一。
只能ssh user@ip
起到作用,反之则不行。当我运行时出现以下错误ssh ip root
sh: root: not found
因此,我猜使用有问题语法的应用程序之一无法登录。
答案1
这ssh user@ip
是正确的语法。另一个以您的身份登录到主机ip
并尝试运行名为 的命令root
。
请更新您的问题并解释您实际想要实现的目标。
答案2
正如其他人所说,ssh user@ip
这是正确的语法。如果使用ssh ip user
,“用户”部分实际上是要在远程主机上执行的命令。
当您抑制user@
正确语法的部分时,您实际上是将本地用户传递到远程主机。如果您没有同名的用户,或者它是远程主机上的禁用用户,您将收到错误消息。
该错误消息试图告诉您( sh: root: not found
) 的是远程主机上没有 root 命令。
ssh简介
ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile]
[-I pkcs11] [-i identity_file] [-L [bind_address:]port:host:hostport]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-Q cipher | cipher-auth | mac | kex | key | protocol-version]
[-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] [user@]hostname [command]
相关内容
- SSH(1)联机帮助页
答案3
ssh
如果你查看by的手册页man ssh
,你会发现相关的语法
ssh [...] [-l login_name] [...] [user@]hostname [command]
因此,当它解析您的命令时,它将把第一个不带标志的参数视为主机名,并将其后面的参数视为传递到远程执行的命令。
回到你的案例。如果您将您的名字放在主机名后面,那么它将被视为命令。这就是为什么它会提示您该错误消息。因为root
在远程主机中找不到命令。