![root@mickey:/#su goofy && ssh goofy.com -- 为什么会失败?](https://linux22.com/image/969134/root%40mickey%3A%2F%23su%20goofy%20%26%26%20ssh%20goofy.com%20--%20%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BC%9A%E5%A4%B1%E8%B4%A5%EF%BC%9F.png)
米奇(以 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
/参数或查看我认为语法更合乎逻辑的命令。以下是正确编写命令的方法(假设这确实是您想要执行的操作):--command
su
man su
sudo
su -c "ssh goofy.com" goofy # or sudo -u goofy -- ssh goofy.com