Armazenar permanentemente endereços ao usar SSH

12

Eu tenho alguns servidores remotos aos quais me 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 obtive alguns deles.

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

server1 = 111.222.111.222

E digite comandos como:

ssh root@server1

ao invés de:

ssh [email protected]
incomum
fonte

Respostas:

22

Para conexões SSH, você pode criar um arquivo de configuração do usuário ~/.ssh/confige 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 nome no sistema local). Veja man ssh_configpara detalhes completos.

chave de aço
fonte
14

Sim, basta anotá-las no arquivo /etc/hosts. Possui 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

Após salvar, você pode acessar o servidor pelo nome.

caos
fonte
@theusual Se esta foi a resposta que você escolheu, considere aceitá-la (marque a caixa de seleção abaixo dos botões para cima / para baixo).
precisa saber é
8

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

Se por "permanentemente" você quer dizer "contanto que eu não saia desta sessão do terminal", você pode simplesmente usar o export server1=111.222.111.222comando se estiver usando um bashshell baseado em ( setenv server1 111.222.111.222para um csh/tcshshell baseado em se bem me lembro). Em seguida, você pode acessar a variável de pré-fixando com $ : ssh root@$server1.

Se por "permanentemente" você quer dizer "cada vez que inicio um novo terminal", será necessário definir sua variável em um dos arquivos init do shell. Por exemplo, na $HOME/.bashrcde bashconchas baseados, ou $HOME/.cshrc- presumivelmente usando a mesma sintaxe mencionada no parágrafo anterior. Observe que você terá que originar o arquivo init (por exemplo, source $HOME/.bashrcou abrir um novo shell para que as alterações sejam levadas em consideração.

Nota: a resposta da memória pode exigir alguns pequenos ajustes.

Skippy le Grand Gourou
fonte
2
Por permanente, mesmo que um reinicie o computador. Vou dar uma olhada nisso, pode ser útil algum tempo.
theusual
Em seguida, o segundo método se aplica (arquivos shell init).
Skippy le Grand Gourou
1

Não é uma resposta direta à pergunta (o caos e a chave de aço já forneceram o que eu acho que seriam as melhores soluções literais), mas se você só precisar ssh para o único usuário no único endereço na maioria dos casos, analisando o .bash_aliasesarquivo no diretório inicial deve ser útil, pois você pode criar um alias para todo o comando do terminal.

DTR
fonte
0

As respostas específicas são muito boas.

No entanto, em geral, se você quiser definir algumas coisas / configurações em um shell, basta escrever um script para fazê-lo e depois executá-lo com sourceou .quando desejar que essa configuração seja efetivada.

Se é algo que você deseja o tempo todo, pode originar o arquivo em .profile (para shells de login) ou em .bashrc para todos os shells (se você usar o bash).

Com uma abordagem como essa, você pode ter vários scripts para configurar diferentes ambientes de trabalho, conforme necessário, contanto que eles não entrem em conflito se você chamar um deles depois de chamar outro primeiro.

Joe
fonte