Múltiplos tipos de acesso ssh de um determinado usuário1 / cliente para o mesmo usuário2 / servidor

2

Eu quero acessar de uma combinação de usuário / cliente (digamos, user1@cl ) para uma combinação de usuário / servidor (digamos, user2@srv ) via ssh, com dois tipos diferentes de acesso:

  1. O tipo de acesso nº 1 seria restrito a interações com um repositório de bazar. Para isso, adicionei uma linha (# 1) em ~user2/.ssh/authorized_keys como

    command="bzr serve --inet --directory=/repodir --allow-writes",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-rsa ... user1@cl
    
  2. O tipo de acesso # 2 seria um shell de login. Para isso, adicionei uma linha "normal" (# 2) em ~user2/.ssh/authorized_keys como

    ssh-rsa ... user1@cl
    

Pelo que entendi, e como testei, as duas linhas não podem ser usadas simultaneamente. Ou seja, se a linha # 1 aparecer primeiro em ~user2/.ssh/authorized_keys , então eu seria capaz de interagir com o repositório bzr, mas não serei capaz de fazer

[user1@cl]$ ssh user2@srv

Se a linha 2 aparecer em primeiro lugar em ~user2/.ssh/authorized_keys , então eu seria capaz de fazer ssh , mas qualquer operação bzr dará

bzr: ERROR: Not a branch ...

Existe alguma maneira de resolver isso?

Estou usando o RHEL7, mas acho que isso não é importante.

Posts relacionados (mas não abordando o meu caso, como eu entendo):

link

link

link

link

    
por sancho.s 01.09.2017 / 13:05

2 respostas

2

  1. Na sua máquina cliente, gere duas chaves para user1 , digamos /home/user1/key1 e /home/user1/key2 . Se você não tiver preocupações de segurança particularmente strongs, poderá fornecer uma senha vazia para uma delas, digamos, para key1 .
  2. Copie as duas chaves para o servidor com ssh-copy-id :

    ssh-copy-id -i ~/.ssh/key1 [email protected]
    ssh-copy-id -i ~/.ssh/key2 [email protected]
    

    Faça login com os dois para garantir que eles funcionem:

    ssh -i ~/.ssh/key1 [email protected]
    ssh -i ~/.ssh/key2 [email protected]
    
  3. No servidor, edite seu ~user2/.ssh/authorized_keys e adicione command="bzr ..." à primeira chave.

  4. Na máquina cliente, edite um arquivo ~user1/.ssh/config e adicione aliases para as duas chaves. Algo parecido com isto:

    Host alias1
        HostName        server.example.com
        User            user2
        IdentityFile    /home/user1/.ssh/key1
        ControlPath     ~/.ssh/ctl1-%u-%r-%h-%p
        ControlMaster   auto
        ControlPersist  5m
    
    Host alias2
        HostName        server.example.com
        User            user2
        IdentityFile    /home/user1/.ssh/key2
    
  5. Agora use bzr+ssh://alias1 para bazaar e ssh alias2 para um shell de login.

Edite ainda mais ~/.ssh/config para atender às suas necessidades, a sintaxe é igual à de /etc/ssh/ssh_config . Isso é tudo.

    
por 01.09.2017 / 19:55
1

Eu fiz isso funcionar, com dois pares de chaves diferentes (digamos, par 1 para bzr e par 2 para ssh login). Eu adicionei as linhas correspondentes em ~user2/.ssh/authorized_keys . A chave privada 1 foi armazenada no arquivo id_rsa (que é lido por padrão), e a chave privada 2 foi armazenada no arquivo id_rsa_ssh .

Em seguida, bzr estava funcionando normalmente e, para fazer login, uso

[user1@cl]$ ssh -i id_rsa_ssh user2@srv

que indica o uso de uma identidade alternativa.

    
por 01.09.2017 / 19:45