我用~/.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