Conecta o servidor headless ao OpenVPN

1

Estou executando um servidor Ubuntu 14.04.1 sem cabeçalho. Eu gostaria de usar um serviço de VPN comercial para proteger a conexão de internet do servidor, e meu provedor de VPN usa senhas para autenticação. Instalei openvpn no servidor e ele tem os arquivos .ca , .conf necessários para iniciar uma conexão com minha VPN.

No entanto, para iniciar essa conexão, preciso ssh in e emitir os comandos ( sudo openvpn --config <conf-file> seguido por minhas credenciais de VPN) e manter meu terminal aberto por quanto tempo eu quiser que o servidor permaneça conectado ao VPN.

Isso é impraticável em um ambiente sem cabeça. Eu tenho tentado emitir o comando remotamente de tal forma que ele possa ser executado em segundo plano enquanto eu me desconecto do servidor, mas estou enfrentando os seguintes problemas:

  • Eu poderia configurar o servidor para se conectar automaticamente na inicialização, mas isso exigiria armazenar minhas credenciais de VPN em texto sem formatação, o que eu sou contra.
  • Não consigo executar um único comando ssh como root (sem me conectar ao servidor como root , mas não estou certo de que definir uma senha para root seja uma boa ideia. Opiniões? ). Ou seja, se eu enviar ssh <user>@<server> "sudo <command>" recebo
      

    sudo: no tty present e nenhum programa askpass especificado

  •   
  • Qualquer combinação dos sinalizadores fN que eu tento passar para ssh resulta no comando indo para o segundo plano antes que eu seja solicitado pelas minhas credenciais de VPN.
  •   
  Por favor, não hesite em oferecer um caminho diferente de iniciar a conexão, mesmo se você acha que essas idéias são inviáveis. No entanto, observe que o servidor não tem uma GUI instalada, portanto, qualquer ideia que não seja adequada (por exemplo, eu adoraria usar nmcli para iniciar minha VPN, mas não posso criar uma network-manager de conexão sem GUI, ou pelo menos eu não sei como).

(PS Tentei encontrar uma solução on-line, mas há muitos resultados lidando com a configuração de uma conexão do OpenVPN para o servidor, e se algo relevante estiver escondido entre eles, não consegui encontrar isso.)

    
por Jonathan Y. 15.12.2014 / 12:29

2 respostas

4

Você pode fazer login no servidor e iniciar uma tela (digite screen . Se não estiver instalado, você pode pegue com apt-get install screen no debian ou ubuntu ou yum install screen no fedora), que cria uma nova sessão de terminal que pode continuar rodando mesmo quando sua conexão ssh é fechada. Dentro da sessão de tela, inicie seu OpenVPN. Você pode desanexar a sessão (sair e continuar funcionando) por ctrl-a d . Você pode então sair e o OpenVPN continuará rodando dentro da tela. Se você fizer login novamente, poderá se reconectar à sua sessão de tela usando screen -x .

Dentro da tela, você também pode iniciar uma nova sessão por ctrl-a c (criar) e alternar entre as sessões com ctrl-a n (próximo) ou ctrl-a p (anterior). Use man screen para saber mais ou use o Google;) Você precisa pressionar ctrl-a esc na tela para rolar para cima. Se você fechar o último shell dentro da tela, a tela terminará.

    
por Uwe Burger 15.12.2014 / 14:31
0

screen é um comando (use o apt-get install screen no debian ou ubuntu ou yum install screen no fedora para obtê-lo se não estiver instalado-). Ele cria uma nova sessão e mantém essa execução mesmo quando sua conexão ssh é fechada. Você pode reconectar pela tela -x. Dentro da tela, você pode iniciar uma nova sessão por ctrl-a c (criar) e alternar entre as sessões por ctrl-a n (próximo) ou ctrl-a p (anterior). usar tela de homem para aprender mais ou usar o google;) Você tem que pressionar a tela ctrl-a esc para rolar para cima. Se você fechar o último shell dentro da tela, a tela terminará.

    
por Uwe Burger 15.12.2014 / 14:48