SSH – 如何在〜/ .ssh / config文件中包含“-t command”

我使用~/.ssh/config文件,以便我可以轻松地inputssh myserver ,并提供正确的用户名,端口,主机名,身份文件等。

但是对于许多服务器,我所做的第一件事是inputsu -root身份login。 我可以在命令行中的一个命令完成这一切,如下所示: ssh myserver -t su - 。 有什么我可以添加到我的~/.ssh/config文件,将为我做? 我希望能够做到ssh myserver-root ,它会做和ssh myserver -t su -一样的事情。

我知道PermitRootLogin ,这个服务器closures了,我不愿意把它打开。 我宁愿看看是否有办法在客户端使用ssh来做到这一点。

我想我会从另一个方向来处理这个问题 – 在远程服务器上的〜/ .ssh / authorized_keys文件的公共密钥条目中使用'command ='来运行你的“su – ”命令。

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

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

使用武力卢克!

在你的~/.ssh/config使用RequestTTY force作为所需的主机。

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

为什么不把脚本添加到path中的目录(或称为rssh的别名),如下所示:

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

那么它只是:

 rssh myServer 

在OpenSSH源代码中,我没有find伪tty分配的configuration选项。

但是我可以给PermitRootLogin一个小费,把它设置为:

 PermitRootLogin without-password 

并且只允许使用ssh-key进行rootlogin。

如何在服务器端的〜/ .bashrc中添加这样的内容?

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

最好的答案可能是rkthkr和jrg的组合。 使用PermitRootLogin来请求一个密钥,然后只把关键字放在root的authorized_keys文件中。