SSH - Como incluir o comando -t no arquivo ~ / .ssh / config

13

Eu uso o ~/.ssh/configarquivo para que eu possa entrar facilmente ssh myservere ele fornecerá o nome de usuário, porta, nome do host, arquivo de identidade etc.

No entanto, para muitos servidores, a primeira coisa que faço é entrar su -para fazer login como root. Eu posso fazer isso tudo em um comando na linha de comando da seguinte forma: ssh myserver -t su -. Existe algo que eu possa adicionar ao meu ~/.ssh/configarquivo que faça isso por mim? Eu quero ser capaz de fazer ssh myserver-roote fará a mesma coisa que ssh myserver -t su -?

Eu sei PermitRootLogin, isso está desativado para este servidor e estou relutante em ativá-lo. Prefiro ver se existe uma maneira de fazer isso usando ssh no lado do cliente.

Rory
fonte

Respostas:

10

Eu acho que abordaria isso da outra direção - use 'command =' na entrada da chave pública no seu arquivo ~ / .ssh / allowed_keys no servidor remoto, para executar o comando "su -".

Em seguida, basta usar / referenciar a chave privada no seu arquivo ~ / .ssh / config (opção IdentityFile) para cada host / alias ("myserver-root") que você deseja trabalhar dessa maneira.

As opções disponíveis em allowed_keys (5) estão documentadas no sshd (8).

jrg
fonte
Sim, isso faz exatamente o que eu quero. :) Eu tenho controle total sobre o arquivo ~ / .ssh / allowed_key no servidor e não tenho problemas em mudar isso.
Rory
3

Por que não adicionar um script a um diretório no seu caminho (ou um apelido para ele) chamado rssh como:

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

Então é apenas:

rssh myServer
Kyle Brandt
fonte
1

Não encontrei nenhuma opção de configuração para alocação de pseudo-tty na fonte OpenSSH.

Mas posso dar uma dica sobre o PermitRootLogin, defina-o como:

PermitRootLogin without-password

E permita apenas logins raiz com chaves ssh.

rkthkr
fonte
1

Que tal adicionar algo assim em ~ / .bashrc no lado do servidor?

if [ "$SSH_TTY" != "" ]; then su -; logout; fi
Shawn Chin
fonte
1

A melhor resposta é provavelmente uma combinação de rkthkr e jrg . Use PermitRootLoginpara exigir uma chave e, em seguida, coloque a chave apenas com a commandpalavra - chave no arquivo raiz_de_usuário autorizado.

mwalling
fonte