SSH com um alias de usuário?

10

Esta pergunta não é uma duplicata. Leia antes de marcá-lo como tal.

É possível atribuir apelidos ou aliases aos usuários em um servidor Linux e SSH no servidor usando os apelidos? Estou pensando em algo parecido com os aliases para vários comandos que são adicionados ao .bashrcou ao .bash_aliasesarquivo, por exemplo:

alias grep='grep --color=auto'

Por exemplo, se houver um requisito (regra de negócios) para configurar os usuários no servidor com seu nome completo, por exemplo, em john_smithvez de apenas o primeiro nome ( john), mas queremos apelidar john_smith fruitloopse queremos que John seja capaz de:

ssh john_smith@ip_address

assim como:

ssh fruitloops@ip_address

Se possível, onde seria configurado o mapeamento entre um usuário e seu apelido? O usuário fruitloopstambém precisa existir no servidor?

Esta pergunta é sobre como configurar um alias para um usuário, não um host .

dw8547
fonte
11
Com um alias de host você poderia fazerssh fruitloop
Takkat
Minha pergunta é sobre como configurar um alias para um usuário, não para o host. fruitloopsrefere-se ao usuário john_smith, não ao endereço IP.
dw8547
11
Eu acredito que estas não são as mesmas perguntas ... +1 à pergunta;)
Ravexina
11
Sinto muito pelo meu mal-entendido - um alias de host SSH teria que ser configurado no cliente, mas o que você precisa é de uma solução configurada no servidor . Retirou meu voto próximo.
Takkat
11
Eu acho que isso é possível com alguns truques do PAM (se você estiver usando o PAM). Talvez eu consiga encontrar algum código antigo nessas linhas (se o fizer, postarei como resposta).
Sumudu Fernando

Respostas:

14

Cada usuário no linux tem apenas um nome e esse é seu único nome. você pode criar aliases para comandos e não para usuários.

Mas você pode criar um segundo usuário com o mesmo UID, diretório inicial e senha que seriam suficientes.

Ziazis
fonte
Portanto, minhas /etc/passwdentradas correspondentes a esses usuários se pareceriam com: john_smith:x:1001:1001:,,,:/home/john_smith:/bin/bashe fruitloops:x:1001:1001:,,,:/home/john_smith:/bin/bash?
Dw8547
2
Tentei 3 diferentes abordagens após a adição do usuário john_smithcom UID = 1001. 1) adduser --home /home/john_smith --uid 1001 fruitloops , isso não funcionou ( adduserfalhou porque a identificação do usuário foi tirada) 2) useradd --home /home/john_smith --non-unique --uid 1001 fruitloops , isso funcionou, mas levou a um comportamento que não era desejável 3) Finalmente, adicionei a linha fruitloops:x:1001:1001:,,,:/home/john_smith:/bin/bashdiretamente ao /etc/passwdarquivo e isso foi mais próximo do que eu estava procurando . Eu SSH em ip_addresscomo fruitloopse pousar na /home/john_smithchegada.
Dw8547
11
Vou discutir com o seu texto aqui. No seu cenário, você criou um usuário (1001) com dois nomes de login diferentes. Você não fez isso aqui, mas não há razão para que os dois nomes não possam ter diretórios pessoais e shells de login diferentes. Entre como "fruitloops" e crie um arquivo. Agora verifique o diretório e você verá que john_smith é mostrado como o proprietário do arquivo, porque esse é o primeiro nome encontrado em / etc / passwd para o uid 1001. Podemos discutir se john_smith é o nome e fruitloops é um alias ou john_smith é o nome principal e o fruitloops é secundário, mas é semântico.
Monty Harder
2
"você pode criar um segundo usuário com o mesmo UID, diretório pessoal e senha" - isso soa como um hack terrível que não garante que funcione em diferentes implementações compatíveis com POSIX. O POSIX requer que o relacionamento entre nomes de usuário e IDs de usuário seja bidirecionalmente distinto.
David Foerster
@ dw8547 Você pode explicar um pouco mais sobre o comportamento indesejável do comando useradd?
Monty Harder
0

Eu não tentei isso, mas outra opção além dos dois usuários mapeados para um único UID (que IMO parece perigoso, mas esta opção provavelmente é igualmente perigosa) é ter um único usuário como redirecionador baseado na chave SSH. É assim que os repositórios de controle de origem que usam SSH normalmente funcionam.

Vamos chamar o usuário me. Todo mundo vai usar esse alias.

ssh me@ip_address

Agora, o usuário mepossui todas as chaves públicas dos usuários ~/.ssh/authorized_keys.

command="sudo -i -u user-mapped-to-key" ssh-rsa key

Você precisará tornar o usuário mecapaz de sudo como os outros usuários e gerenciar o mearquivo de chaves autorizado.

Enfim, eu não testei isso, mas, em teoria, algo assim deve funcionar.

Adam Gent
fonte