Armazenar endereços permanentemente ao usar o SSH

12

Eu tenho alguns servidores remotos que eu conecto através do terminal. Os servidores não têm um domínio, apenas um endereço IP que é difícil de lembrar quando eu tenho alguns deles.

Existe uma maneira de armazenar permanentemente valores no terminal, para que eu possa fazer o seguinte?

server1 = 111.222.111.222

E digite comandos como:

ssh root@server1

em vez de:

ssh [email protected]
    
por theusual 28.08.2015 / 13:51

5 respostas

21

Para conexões SSH, você pode criar um arquivo de configuração de usuário ~/.ssh/config e colocar os mapeamentos lá, por exemplo.

Host server1
  Hostname      111.222.111.222

Você pode adicionar facilmente outros campos, como Port (para portas não padrão) e User (útil se o seu nome de usuário no sistema remoto for diferente do sistema local). Veja man ssh_config para detalhes completos.

    
por steeldriver 28.08.2015 / 14:18
14

Sim, apenas escreva-os no arquivo /etc/hosts . Tem a seguinte sintaxe:

1.2.3.4 servername additional_servername

Onde:

  • 1.2.3.4 é o endereço IP
  • servername é o nome
  • additional_servername é um nome opcional

Depois de salvar, você pode acessar o servidor pelo seu nome.

    
por chaos 28.08.2015 / 14:04
8

É claro que, para o seu problema específico, você deseja seguir os conselhos @chaos e @steeldriver, mas, no caso geral, para "armazenar permanentemente os valores no terminal", você está procurando as variáveis do shell. Como configurá-los dependerá do seu shell (eu acho que echo $SHELL fornecerá as informações relevantes).

Se por "permanentemente" você quer dizer "desde que eu não saia desta sessão de terminal", então você pode simplesmente usar o comando export server1=111.222.111.222 se estiver usando um shell bash -based ( setenv server1 111.222.111.222 para um shell csh/tcsh -based, se bem me lembro). Então você pode acessar sua variável prefixando-a com $ : ssh root@$server1 .

Se por "permanentemente" você quer dizer "cada vez que eu lanço um novo terminal", então você precisará configurar sua variável em um dos arquivos init do shell. Por exemplo. em $HOME/.bashrc para shells baseados em bash , ou $HOME/.cshrc - presumivelmente usando a mesma sintaxe mencionada no parágrafo anterior. Observe que você precisará fornecer o arquivo init (por exemplo, source $HOME/.bashrc ou abrir um novo shell para que as alterações sejam levadas em consideração.

NB: Resposta da memória, pode exigir alguns pequenos ajustes.

    
por Skippy le Grand Gourou 28.08.2015 / 21:06
1

Não é uma resposta direta à pergunta (o caos e o steeldriver já forneceram o que eu acho que seriam as melhores soluções literais), mas se você precisar apenas de ssh para um usuário no único endereço na maioria dos casos, então olhar para editar o arquivo .bash_aliases em seu diretório home deve ser útil, pois você pode criar um alias para o comando terminal inteiro.

    
por DTR 28.08.2015 / 21:22
0

As respostas específicas são muito boas.

Em geral, porém, se você quiser ter algumas coisas definidas / setup em um shell, apenas escreva um script para executá-lo e, em seguida, execute-o com source ou . quando quiser essa configuração em vigor. / p>

Se é algo que você quer o tempo todo, você pode usar a fonte em .profile (para shells de login) ou em .bashrc para todas as shells (se você usar bash).

Com uma abordagem como essa, você pode ter vários scripts para configurar diferentes ambientes de trabalho conforme necessário, desde que tenha certeza de que eles não pisam um no outro se você invocar um deles depois de invocar outro primeiro.

    
por Joe 03.09.2015 / 19:05