Alguns de nós da minha empresa têm acesso root nos servidores de produção. Estamos procurando uma boa maneira de deixar isso extremamente claro quando entrarmos no ssh.
Algumas idéias que tivemos foram:
- Prompt vermelho brilhante
- Responda a um enigma antes de obter uma concha
- Digite uma palavra aleatória antes de obter um shell
Quais são algumas das técnicas que vocês usam para diferenciar os sistemas de produção?
Respostas:
O prompt vermelho é uma boa ideia, que eu também uso.
Outro truque é colocar um grande aviso de arte ASCII no
/etc/motd
arquivo.Ter algo parecido com isto ao cumprimentá-lo ao fazer login deve chamar sua atenção:
Você pode gerar um aviso nesse site ou usar o
figlet
comandoComo Nicholas Smith sugeriu nos comentários, você pode apimentar as coisas com alguns dragões ou outros animais usando o
cowsay
comandoEm vez de usar o arquivo / etc / motd, você também pode chamar
cowsay
oufiglet
no.profile
arquivo.fonte
Não é exatamente a mesma coisa, mas este site recomenda que seus desenvolvedores usem um sombrero rosa ao fazer alterações nos sistemas de produção. Você provavelmente poderia ter uma regra semelhante para jogar neles.
fonte
O maior que usei é um esquema de nomeação discreto, em que os sistemas prod são nomeados obviamente diferentes das instâncias test / dev. Isso torna o prompt de estilo "Nome de usuário @ Nome do host:" visivelmente diferente. E por óbvio quero dizer mais do que apenas palavras diferentes, formatos diferentes também:
exemplo: PRD-WEB001 vs DEVEL-BOB-WEB001
Isso tem várias coisas a seu favor:
E o melhor de tudo, não requer configurações de terminal especiais para produção, apenas para evitar erros de Ops.
Na minha experiência, você quer algo que seja um lembrete constante de onde você está. Métodos de login como enigmas são bons por cerca de 10 segundos, até você esquecer qual janela é qual. Tudo o que precisamos é fazer um
ls
diretório errado para rolar o sinistro banner de login fora de vista, enterrar a janela do terminal sob uma janela do navegador enquanto pesquisava algo, alternar a tecla Alt para a janela errada e causar o caos. É melhor ter alguma sugestão visual constante, como um prompt de comando significativamente diferente.fonte
Uma coisa que você precisa ter em mente é que isso precisa ser um lembrete persistente, não apenas um indicador no momento do login. Muitas vezes, alguém terá várias conchas rodando ao mesmo tempo em abas diferentes e se moverá entre elas. Alguns serão dev, alguma produção. Portanto, quando você estiver executando um comando, precisará ter um indicador nesse ponto. Portanto, ter um prompt especial é o melhor método, na minha experiência, com uma barra de título / guia modificada, sendo um ótimo complemento para encontrar a janela / guia direita facilmente.
Portanto, eu recomendaria ter um prompt colorido (vermelho sendo a escolha óbvia) e todas as letras maiúsculas para o nome do host, com comportamento semelhante para o usuário (privilegiado versus não privilegiado) como seu prompt. Alguns exemplos:
Geralmente algo como
no seu arquivo de inicialização do shell. Este é para o azul. Substitua
44
por41
vermelho fir e42
por verde. Outras cores e padrões selvagens disponíveis também .fonte
Estas são as minhas sugestões:
1) Verifique se a maioria dos comandos (rm, chown, chmod, /etc/init.d/*) no ambiente de produção exige acesso ao sudo
2) Use PS1 / PS2 para indicar que o usuário está em um servidor Prod
Isso mostrará o prompt de comando como
3) Se estiver usando clientes Putty / SSH, você sempre poderá configurar uma cor / perfil de fundo exclusivo para destacar os servidores de produção.
fonte
Apenas considere que suas segunda e terceira idéias ajudam durante a conexão inicial, mas não têm valor quando você tem vários terminais abertos e se deslocam de um para outro. A idéia de sysadmin1138 de usar a nomeação é boa quando pode ser aplicada, mas há muitos casos em que não pode ser.
A única coisa que achei realmente útil é um prompt colorido. Eu gosto de verde para desenvolvimento / teste, vermelho para produção e azul para máquinas na DMZ. Dessa forma, mesmo se eu tiver duas máquinas com o mesmo nome (em redes diferentes), como ao preparar uma máquina de substituição, ainda assim posso dizer com facilidade em qual delas estou.
fonte
O prompt de comando vermelho / especial é bom. Outra coisa pode ser um logoff automático mais rápido nessas máquinas usando a variável TMOUT. Se você abriu muitas janelas, as de produção desaparecem mais rapidamente.
Isso deve levar a um comportamento diferente:
fonte
Trabalhar em uma máquina de produção com uma conta root simples nunca é uma boa ideia.
Tenha uma conta com permissões completas de sudo. Não permite salvar a sessão sudo. Proibir sudo su. Use uma senha separada para ela (não a que você possui para sua máquina de desenvolvimento). Provavelmente, ajuste o sudo para notificar sobre a identidade de produção do shell antes de executar o comando (via alias).
Cometerá erros acidentais bastante difíceis. E alerta vermelho nunca dói.
fonte
sudo bash
) Você pode obter um shell raiz em qualquer configuração de 'lista negra'. (Se o seu cuidado, você pode pará-lo com uma configuração de whitelist, mas normalmente não é garantido.)Eu segui a ideia do prompt vermelho e achei bastante tedioso encontrar um código de trabalho
.bashrc
.Então, aqui está minha versão, pronta para ser incluída em
.bashrc
- https://github.com/RichVel/nicer-bash-prompt . É completamente impulsionado por hostname, por isso, enquanto você tem um padrão adequado para nomes de host de produção (por exemploxyprod01
,xyprod02
, etc) que vai funcionar bem, e você pode usar a mesma.bashrc
em todos os ambientes.Se parece com isso:
Isso cria um prompt melhor do bash, incluindo o prompt vermelho nos hosts de produção - também mostra a ramificação git atual e os últimos 2 diretórios em $ PWD. Tome cuidado para não atrapalhar a exibição do prompt ao fazer Ctrl / R (pesquisa reversa) no bash.
Também inclui um recurso opcional para sincronizar seu histórico do bash em todas as janelas do terminal, seguindo as linhas desta resposta . Isso é legal, mas nem todo mundo quer, então está desativado por padrão.
fonte
Embora eu não saiba como é a sua configuração de TI, uma solução que pode ser eficaz seria ter uma sala especial para a qual você precisa acessar o SSH nos servidores de produção como raiz. Se você possui um datacenter, pode ser a própria sala do servidor, mas ter um local físico separado do qual o trabalho 'normal' não seja realizado seria um eficaz lembrete constante de que você está acessando máquinas de produção.
fonte
Apenas um ajuste nas sugestões acima. Uso o CDE como minha área de trabalho unix e todos os sistemas de produção que acesso através de um menu em .dt / dtwmrc. Em todos os sistemas dev e UAT, mantenho meu esquema de cores normal, mas nos sistemas prod defino o terminal para ter um fundo vermelho. Não gosto do visual, mas esse é o ponto.
eta - perdeu Karol sugerindo basicamente a mesma coisa
fonte
Quando entro em uma máquina de produção, recebo um parágrafo me avisando que é uma máquina de produção, bem como uma pequena lista de diretrizes. Há um número para o qual posso ligar para o suporte ao UNIX, se não acho que posso executar minha tarefa sozinho com segurança, um lembrete de que explodir uma máquina de produção pode me custar meu trabalho e um lembrete de que tudo o que faço é registrado.
editar: Eu trabalho na indústria de transporte.
fonte
No PuTTY, você pode alterar o título da janela para algo diferente do padrão para uma sessão salva específica. Isso sempre permanece na janela, não importa o que você faça dentro da janela. Isso também aparece na barra de tarefas.
Expanda Janela, clique em Comportamento. Digite algo no título da janela, como:
fonte
Resposta simples? Mude a cor do seu shell para vermelho na configuração do shell. Será absolutamente óbvio e simples de configurar. Não apenas isso, mas diferentemente dos cabeçalhos do servidor, ele não desaparece depois que você digita alguns comandos.
fonte
Aqui está o que eu fiz no meu Mac. Para cada servidor, adiciono uma entrada no meu arquivo ~ / .ssh / config, por exemplo
Este Applescript é acionado assim que a sessão SSH é estabelecida. Ele define a cor de fundo do terminal com os valores RGB fornecidos (ou volta ao padrão se nenhum valor de cor for fornecido). A parte potencialmente complicada é interceptar o final da sessão SSH para definir as cores de volta aos padrões. Para isso, criei o seguinte script de shell como ~ / bin / ssh para substituir o comando ssh padrão. Isso basicamente intercepta e encerra todas as chamadas para o comando SSH. Tentei usar alias e funções, mas esta solução funcionou melhor:
Aqui está a fonte do script change_terminal_colours.scpt . Coloque isso no seu diretório ~ / bin também:
Eu escrevi essa solução há uma semana e a uso desde então. Espero que outros achem isso valioso. Acho que funciona melhor do que qualquer uma das soluções encontradas pelo Google.
fonte
Meu grupo usa o Visionapp Remote Desktop (edição de 2017: parece que o produto foi renomeado, mas acho que é o mesmo) para o RDP em máquinas Windows e o SSH para Linux. Nossas conexões são agrupadas em pastas por camada e atribuídas a uma cor de guia.
Portanto, sempre que abrirmos uma conexão de produção - bam! - temos um pouco de vermelho brilhante na nossa cara:
Definitivamente, é um investimento que vale a pena se você é uma grande loja do Windows e depende muito do RDP. Aposto que existem outras ótimas ferramentas se tudo que você precisa é SSH.
fonte
Além de um prompt exclusivo (que parece ser a solução mais confiável), se você estiver efetuando login na mesma estação de trabalho, poderá usar perfis diferentes para suas sessões SSH.
Por exemplo, tenho fundos vermelhos para sistemas de produção, verde para desenvolvimento, azul para infraestrutura (roteadores etc.) e branco para estação de trabalho local.
Se você usa o GNOME, existe uma maneira fácil de iniciar uma conexão SSH com o perfil desejado:
gnome-terminal --window-with-profile=production -e 'ssh [email protected]'
A principal desvantagem - é do lado do cliente, portanto, um prompt especial ainda é sua melhor aposta se você estiver acessando servidores de locais diferentes.
fonte
Outra maneira de deixar claro que você está em um sistema de produção é definir o recurso TMOUT (saída automática) no sistema de produção.
fonte
Devido aos vastos requisitos regulatórios durante o trabalho em um setor específico, aqui as atividades de todos são registradas com chave para quaisquer disputas futuras. Por isso, o acesso também é restrito e você precisa pular alguns "menus" que permitem acessar uma máquina como um dos poucos usuários confiáveis. Ao configurar esse sistema, a pessoa deve escolher conscientemente o ambiente de PRODUÇÃO ou QA e, em seguida, escolher o host que deseja acessar da lista. Isso também tem um período de tempo limite, para que você não tenha que se conectar a um host de produtos e esquecer o ambiente em que está no dia seguinte.
fonte
Eu uso as mudanças rápidas como outras aqui. É rápido e desagradável, mas funciona bem para os meus propósitos. Ele fornecerá vermelho como usuário normal em um sistema de produção e maiúsculas vermelhas como raiz em um sistema de produção.
Poderia ser escrito em menos linhas, mas eu faço assim para que eu possa ajustar os outros 2 casos (não root-non prod), se eu quiser.
Trabalhamos no pressuposto de que um servidor de produção não usa DHCP, mas você pode usar qualquer outro método para descobrir se é um sistema prod. Tudo o que funciona para você.
fonte
Tenha uma senha root diferente (talvez mais longa) nas máquinas de produção.
Você pode criar um sudo especial (ou empacotador de sudo), de forma que uma mensagem especial seja emitida para as máquinas de produção.
fonte
Aqui, temos configurações padrão de massa para tornar a cor de primeiro plano de toda a tela em rosa brilhante.
Funciona muito bem, mas eu gosto de algumas das outras idéias aqui.
fonte
no .bashrc / .bash_profile
fonte