SSH - 如何在 ~/.ssh/config 文件中包括“-t 命令”

SSH - 如何在 ~/.ssh/config 文件中包括“-t 命令”

我用~/.ssh/config文件,以便我可以轻松输入ssh myserver,它将提供正确的用户名、端口、主机名、身份文件等。

但是对于许多服务器,我做的第一件事就是输入su -以 root 身份登录。我可以在命令行中用一个命令完成所有操作,如下所示:ssh myserver -t su -。我是否可以将某些东西添加到我的~/.ssh/config文件中来帮我完成这些操作?我希望能够执行此操作,ssh myserver-root并且它会执行与 相同的操作ssh myserver -t su -

我知道PermitRootLogin,这个服务器的这个功能是关闭的,我不太愿意打开它。我更想看看是否有办法在客户端使用 ssh 来实现这一点。

答案1

我想我应该从另一个方向来解决这个问题 - 在远程服务器上的 ~/.ssh/authorized_keys 文件中的公钥条目上使用“command=”来运行“su -”命令。

然后,只需对想要以这种方式工作的每个主机/别名(“myserver-root”)使用/引用 ~/.ssh/config 文件(IdentityFile 选项)中的私钥即可。

authorized_keys(5) 中可用的选项记录在 sshd(8) 中。

答案2

使用原力,卢克!

RequestTTY force在您~/.ssh/config所需的主机中使用。

顺便说一句,这里也讨论了这个问题https://unix.stackexchange.com/questions/27713/ssh-config-way-to-spectify-pseudo-tty-allocation-and-command-execution-like-sc/294468#294468

答案3

为什么不在你的路径中的目录中添加一个名为 rssh 的脚本(或者它的别名),如下所示:

#!/bin/bash
ssh $1 -t 'su -'

那么就只是:

rssh myServer

答案4

在服务器端的 ~/.bashrc 中添加类似的内容怎么样?

if [ "$SSH_TTY" != "" ]; then su -; logout; fi

相关内容