Quero fazer uma conexão ssh sem senha para um projeto do Subversion. 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.
Você apenas precisa fornecer o nome de usuário do outro sistema no comando svn
:
$ svn co svn+ssh://[email protected]/path/to/repo
Para responder também ao título da sua pergunta:
$ ssh [email protected]
Isso faz com que sshd
na máquina remota procure ~otheruser/.ssh/authorized_keys
para a chave pública correspondente à chave privada na máquina em que você está digitando o comando.
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
desta forma qualquer tentativa de ssh para othersystem será padronizada para usar otheruser. O que é útil para você quando faz o ssh manualmente e também quando está usando o svn.
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.pub
ou ~/.ssh/id_dsa.pub
(dependendo do tipo de chave) do servidor local e anexe-o a ~/.ssh/authorized_keys
no controle remoto.
% ssh-keygen
% cat ~/.ssh/id_*.pub | ssh [email protected] 'cat > .ssh/authorized_keys'
Se você não deseja digitar remoteuser
cada vez que anexar a ~/.ssh/config
:
Host remoteserver
User remoteuser
PS. O nome da chave pode estar na forma de [email protected]
mas é apenas um nome. Pode ser tão bom [email protected]
e ninguém se importaria.
Depois de criar .ssh/config e executar:
cat ~/.ssh/id_*.pub | ssh [email protected] '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 sem problemas.
enter code here