我使用~/.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
作为所需的主机。
为什么不把脚本添加到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文件中。