ssh sem senha para outro nome de usuário?

14

Eu quero fazer uma conexão ssh sem senha para um projeto de subversão. No momento, estou usando ssh + svn, e é um pouco chato, porque tenho que digitar a senha a qualquer momento que quiser fazer transações com o servidor.

Encontrei vários tutoriais na web sobre como gerar uma chave para ssh sem senha, mas todos parecem supor que estou usando o mesmo nome de usuário no sistema remoto e o meu sistema doméstico. No entanto, o nome de usuário que eu uso para ssh + svn é diferente do nome da conta de usuário no sistema que estou executando. Como faço para configurar isso corretamente? Não tive sorte em mudar o nome no arquivo de chaves.

user394
fonte

Respostas:

15

Você apenas precisa fornecer o nome de usuário do outro sistema no svncomando:

$ svn co svn+ssh://otheruser@othersystem/path/to/repo

Para responder também ao título da sua pergunta:

$ ssh otheruser@othersystem

Isso faz sshdcom que na máquina remota procure ~otheruser/.ssh/authorized_keysa chave pública correspondente à chave privada na máquina em que você está digitando o comando.

Warren Young
fonte
1
Portanto, parte das instruções foi criar um arquivo .ssh/id_rsa.pube enviá-lo para o servidor remoto. Quando eu fiz isso, terminou com localusername @ localsystem. Isso deve ser alterado para remoteusername @ remotesystem, certo? Local e remotamente?
user394
5
Não. Basta anexar o conteúdo de seu local, id_rsa.pubpara authorized_keysno sistema remoto. Vai dar certo.
Warren Young
1
alternadamente, muitos sistemas têm ssh-copy-id para resolver este problema: "ssh-copy-id -i ~ / .ssh / id_rsa.pub username @ remota-machine"
Matt Simmons
Infelizmente, muitos não o fazem, e parece que essa não é uma parte padrão do OpenSSH; portanto, existem pelo menos algumas implementações diferentes desse script.
21810 Warren Young
Se você estiver usando o gnome seahorse, tenha a implantação automatizada de chaves.
Maciej Piechotka
9

Existem duas maneiras de fazer isso:

1) coloque o usuário @ no svn url; isto diz ao svn + ssh para fazer login como esse usuário. Eu acho que é uma má idéia do ponto de vista de manutenção, porque coisas como externas que apontam para outras partes do repositório não funcionarão corretamente.

2) faça um ~ / .ssh / config (documentado como ssh_config ) que diz algo como:

Host othersystem
  User otheruser

dessa forma, qualquer tentativa de ssh para o sistema others usará o padrão otheruser. O que é útil para você quando executar o ssh manualmente e quando estiver usando o svn.

pjz
fonte
5

Você não precisa ter o mesmo nome de usuário nos dois mashines. Contanto que você gere a chave ( ssh-keygen), você deve copiar a linha de ~/.ssh/id_rsa.pubou ~/.ssh/id_dsa.pub(dependendo do tipo de chave) do servidor local e anexá-la ao ~/.ssh/authorized_keyscontrole remoto.

% ssh-keygen
% cat ~/.ssh/id_*.pub | ssh remoteuser@remoteserver 'cat > .ssh/authorized_keys'

Se você não deseja digitar remoteusersempre, anexe-o a ~/.ssh/config:

Host remoteserver
    User remoteuser

PS. O nome da chave pode estar na forma de, localuser@localhostmas é apenas um nome . Pode ser tão bom myfavouritekey@myfavouritecomputere ninguém se importaria.

Maciej Piechotka
fonte
O comando "cat" acima é o núcleo do ssh-copy-idscript comum, mas não padrão, mencionado acima. Eu o reconheço porque nem todos os sistemas que eu uso vêm ssh-copy-id, então eu digitei algo assim mais do que algumas vezes. :)
Warren Young
Eu nunca ouvi falar ssh-copy-id. Eu costumo usar vimou seahorse;)
Maciej Piechotka
0

Depois de criar .ssh / config e executar:

cat ~/.ssh/id_*.pub | ssh remoteuser@remoteserver 'cat > .ssh/authorized_keys'

Eu recebo erro:

Bad owner or permissions on /usr/share/eprints3/.ssh/config

então eu adiciono chmod 600 .ssh/config, e depois disso, está funcionando perfeitamente.

enter code here
prazetyo
fonte
1
É melhor se você o anexar no arquivo allowed_keys, caso contrário ele também removerá as chaves de pub de outras pessoas. Então é melhor se você editar sua resposta com 'cat >> .ssh / allowed_keys' #
226 Nitin Mahesh