root@mickey:/#su goofy && ssh goofy.com -- 为什么会失败?

root@mickey:/#su goofy && ssh goofy.com -- 为什么会失败?

米奇(以 root 身份登录)尝试使用 goofy 的帐户通过 ssh 进入 goofy.com。

root@mickey:/#su goofy && ssh goofy.com

但是这无法让 goofy 登录 goofy.com,而是:goofy@mickey:/$ (只有 su goofy 有效,因此 goofy 退出:

goofy@mickey:/$ exit
exit
Permission denied (publickey).

我预计除了 goofy 之外的任何用户都会出现权限错误。我该怎么办

su goofy
ssh goofy.com 

在一行中?

答案1

因为su goofy打开了新会话,但&& ssh goofy.com会转到原始会话。因此&& ssh goofy.com命令是在原始用户下执行的,而不是su-ed 用户下执行的。

尝试像这样一行:sudo -u goofy -H sh -c "ssh goofy.com"

答案2

有几个原因:

  • 如果您只是想以另一个用户身份远程进行 ssh,请指定用户名:

    ssh goofy@server
    # or 
    ssh -u goofy server
    
  • 如果你需要更改用户本地然后运行ssh 作为该用户,请su正确使用。su分叉到其自己的会话中,因此您尾随的命令将在它结束后运行。您可以将命令转换为:

    变得愚蠢,在我完成那里之后(并假设它有效),运行ssh

    查看(运行手册)的-c/参数或查看我认为语法更合乎逻辑的命令。以下是正确编写命令的方法(假设这确实是您想要执行的操作):--commandsuman susudo

    su -c "ssh goofy.com" goofy
    # or
    sudo -u goofy -- ssh goofy.com
    

相关内容