SCP de um servidor para outro sem solicitação de senha

19

Qual é a melhor maneira de fazer scpde uma caixa para outra sem solicitar a senha?

Existem dois servidores:

  • Servidor A (10.152.2.10): /home/oracle/export/files.txt

  • Servidor B (10.152.2.11): /home/oracle/import/

Se eu quiser transferir os arquivos usando scpdo servidor A para o servidor B sem ser solicitado a digitar uma senha

[executando isso no servidor A /home/oracle/export/]

scp files.txt [email protected]:/home/oracle/import

Isso solicitaria uma senha ao inserir o comando.

Eu entendo que é necessário gerar e copiar um keygen para o servidor A. Assim [no servidor A]:

ssh-keygen -t rsa

Isso me dá dois arquivos armazenados em /home/oracle/.ssh:

id_rsa
id_rsa.pub

1. Eu devo copiar os dois arquivos ( id_rsa, id_rsa.pub) no servidor B /home/oracle/.ssh?

Ao fazer uma pesquisa no Google sobre isso, alguns artigos mencionados sobre como anexar / concatenar isso em allowed_keys.

2. Eu devo criar esse arquivo sozinho?

Pareço estar confuso sobre qual é o caminho certo para fazer isso.

Aliás, os dois servidores estão executando o Suse Linux Enterprise Edition 9 ...

jimmij
fonte
11
Tente 'keychain': gentoo.org/proj/en/keychain

Respostas:

16
  1. Não, você mantém id_rsapara si mesmo; no entanto, id_rsa.pubqual é a sua chave pública, pode ser copiada para servidores aos quais você deseja ter acesso. Concatene-os até o final de ~/.ssh/authorized_keys.
  2. Sim, você pode criar ~/.ssh/authorized_keysse ainda não estiver criado; caso contrário, basta anexar ao final do arquivo, usando cat id_rsa.pub >>~/.ssh/authorized_keys.
mipadi
fonte
11

Também existe uma ferramenta que classifica tudo isso para você chamado ssh-copy-id.

Anexará a chave no seu agente se você tiver uma em execução no authorized_keysarquivo e a criará se ela não existir com as permissões corretas. Se você não estiver executando um agente, poderá especificar a chave a ser pressionada -i:ssh-copy-id -i ~/.ssh/id_rsa

mauilion
fonte
5

Você também deve verificar as permissões nos vários arquivos e diretórios:

authorized_keys needs perms of 600 (chmod 600 authorized_keys)
the .ssh directory should be 700
your home directory should be at most 744

Seu diretório pessoal não deve ser gravável por ninguém além de você.

dr-jan
fonte
0

Caso você configure a chave gerada, ssh-keygenmas ainda assim a transferência com menos senha não funcione, verifique a chave pública usada na máquina de origem no comando modo detalhado como abaixo:

sftp -v -oPort=22 userid@server

Geralmente, refere-se à chave pública na /home/<user>/.ssh/id_rsa.pub qual pode ser diferente daquela que você gerou usando ssh-keygen. Você precisa adicionar isso id_rsa.pubno servidor de destino.

Raj
fonte
0

Eu faria o seguinte:

No cliente:

ssh-keygen -t rsa
ssh-copy-id [email protected]

Isso copia a chave do cliente para o servidor. Você precisará da senha do servidor para adicionar sua chave ao anel.

  • A autenticação de senha precisa estar ativada ou você precisa entregar manualmente o arquivo de chaves ao servidor.

No servidor:

Eu, pelo menos, desligaria a autenticação de senha.

Michael Prokopec
fonte