como você cria uma chave ssh para outro usuário?


89

Estou tentando criar uma chave ssh para outro usuário. Estou logado como root. Posso apenas editar os arquivos gerados pelo ssh-keygen e alterar root para o usuário que eu quero?


5
Se você gerar a chave para o usuário, também precisará ter um método seguro de obter a chave privada e sua senha para o usuário. Muito melhor o usuário gera a chave e envia apenas a chave pública por e-mail.
user9517

Mas não é tão difícil assim, você não permite logins com senhas? Se eu sou apenas chave e configuro um novo usuário, ele não pode fazer login para configurar sua chave.
precisa saber é o seguinte

Respostas:


79

Você pode fazer isso com ssh-keygen, no entanto, lembre-se de que a chave privada deve ser privada do usuário, portanto, você deve ter muito cuidado para mantê-la segura - tão segura quanto a senha do usuário. Ou ainda mais seguro, pois o usuário provavelmente não precisará alterá-lo no primeiro login.

ssh-keygen -f anythingcria dois arquivos no diretório atual. anything.pubé a chave pública, que você pode anexar ao usuário ~/.ssh/authorized_keysem qualquer servidor de destino.

O outro arquivo, apenas chamado, anythingé a chave privada e, portanto, deve ser armazenado com segurança para o usuário. O local padrão seria ~username/.ssh/id_rsa(aqui nomeado id_rsa, que é o padrão para chaves rsa). Lembre-se de que o .sshdiretório não pode ser legível ou gravável por ninguém além do usuário, e o diretório inicial do usuário não pode ser gravável por ninguém além do usuário. Da mesma forma, as permissões também devem ser restritas à chave privada: leitura / gravação apenas para o usuário, e o diretório .ssh e o arquivo de chave privado devem pertencer ao usuário.

Tecnicamente, você pode armazenar a chave em qualquer lugar. Com ssh -i path/to/privatekeyvocê pode especificar esse local, durante a conexão. Novamente, a propriedade e as permissões apropriadas são críticas e o ssh não funcionará se você não as tiver direito.


4
+1 para expressar que é uma chave privada (!)
mailq

51
Você está assumindo que o usuário é uma pessoa real. Se o login for um usuário não interativo utilizado para executar tarefas utilitárias (por exemplo, executando scripts maine em servidores remotos), sim, você provavelmente geraria a chave para esse usuário manualmente. Claro, isso tem suas próprias implicações de segurança, mas isso é outra história.
Rilindo 22/10

2
@Rilindo ssh -ipara uma chave privada para um processo não privilegiado é como lido com mais do que alguns processos automatizados de backup rsync. :)
Shadur

9
Não gosto desse tipo de resposta que diz "você não deve fazer isso", mas não responde à pergunta. Embora isso possa ser correto e útil para o contexto da pergunta original, outras pessoas podem ter a mesma pergunta em uma situação diferente. "chaves ssh nunca devem ser geradas para outro usuário": isso é verdade no caso simples. Mas considere múltiplas identidades da mesma pessoa física, por exemplo. Pode haver várias contas em vários sistemas, nem todas permitindo a geração de chaves ou a proteção adequada de chaves privadas.
Gustave

usersouuser's
Usuário

135

Não há informações do usuário nas chaves SSH .

O último campo de uma chave pública é um comentário (e pode ser alterado executando o seguinte comando ssh-keygen -C newcomment).

Não é necessário fazer nada de especial para criar uma chave para outro usuário, basta colocá-la no local certo e definir permissões.


5
Essa é a resposta correta.
sebnukem 31/05

1
Acabei de testar e confirmar, não é apenas um comentário, mas ele pode ser removido e as teclas ainda funcionam. Eu sempre pensei que isso importava! Obrigado por dar a resposta correta. Como os comentários acima, tenho um motivo para criar chaves para outros usuários, mas não vou dizer o porquê, portanto não há argumento.
FreeSoftwareServers

18

Torne-se o usuário usando su e execute a chave como esse usuário:

[root@kvm0001 ~]# su - joeuser
[joeuser@kvm0001 ~]$ ssh-keygen -t dsa (or rsa1 or rsa, depending on your security requirements)
Generating public/private dsa key pair.
Enter file in which to save the key (/home/joeuser/.ssh/id_dsa):

Por que especificar o DSA?
Ram

Opa, força do hábito. Deixe-me atualizar.
Rilindo 23/10

4
você deve usar rsa (ou possivelmente uma das variantes da curva elíptica). dsa é limitado a tamanhos de chaves inseguros. rsa1 é um formato legado para ssh1 que ninguém mais deveria estar usando.
Peter Green

My joeuseré um usuário do serviço, portanto, não consigo fazer login como eles. Como permito que um usuário de serviço (que apenas executa processos) tenha uma chave ssh?
Jonathan

@JonathanLeaders Você especificaria o shell para o usuário ao se tornar esse usuário. Algo assim: `` [root @ ip-10-254-41-211 ~] # grep ftp / etc / passwd ftp: x: 14: 50: usuário FTP: / var / ftp: / sbin / nologin [root @ ip-10-254-41-211 ~] # su - ftp su: aviso: não é possível alterar o diretório para / var / ftp: Esse arquivo ou diretório não existe. No momento, esta conta não está disponível. [root @ ip-10-254-41-211 ~] # su -s / bin / bash ftp bash-4.2 $ whoami ftp bash-4.2 $ `` `
Rilindo

6

Como visto aqui , você pode usar o chmod para alterar as permissões de leitura da pasta do usuário ao qual deseja adicionar a chave SSH.

vim /home/username/.ssh/authorized_keys

Em seguida, basta colar a chave em uma nova linha na parte inferior desse arquivo


1
Fazer a ligação está morto ...
Nyxynyx
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.