Questão SCP um arquivo entre dois servidores


Eu tenho um droplet Digital Ocean (SERVIDOR A) que usa uma chave SSH e senha para minha conta root. Eu criei um usuário adicional e adicionei-o a um novo grupo SFTPUsers seguindo este guia:

https://www.digitalocean.com/community/questions/how-do-i-restrict-a-user-to-a-directoryespecífico

Eu também tenho outro servidor em um host compartilhado (não no Oceano Digital) que tem arquivos de backup noturnos. (SERVIDOR B)

Gostaria de copiar com segurança esses backups noturnos todas as noites do SERVER B para um diretório no meu servidor DO (SERVIDOR A) ao qual meu usuário de backup tem acesso e gostaria de fazer isso com um script para que ele não solicite uma senha para que possa ser executada. Estou muito confuso sobre para onde ir a partir daqui. Eu acho que quanto mais eu pesquiso, mais confuso fico. Gerar uma chave pública / privada no servidor B e, em seguida, copie a chave pública para o servidor A? Então o que acontece?

Aonde eu vou daqui até onde posso SCP um arquivo do meu servidor para o servidor oceano digital? Eu gostaria de fazer isso usando o novo usuário que criei. Realmente saudaria qualquer ajuda / ponteiros na direção certa. Eu tentei fazer leitura em SSH / chaves públicas / privadas, mas ainda não sinto que estou fazendo progresso :(

Obrigado!


0


origem




Respostas:


Preciso criar uma chave SSH diferente para esse usuário? Eu faria isso no servidor DO? Eu não posso nem mesmo fazer login como este novo usuário porque ele diz acesso negado (chave pública) quando tento fazer o login. Eu posso logar como root, no entanto, quando eu uso essa chave.

Você pode, claro, usar a mesma chave para tudo. No entanto, seria melhor usar chaves diferentes para usuários diferentes. Então eu recomendo gerar uma chave para um nãoroot-do utilizador. (E talvez não entrar em uma senha, ou então você terá que entender ssh-agent (veja abaixo).) Você geraria a chave no servidor DO e, em seguida, anexaria a chave pública ... veja a próxima etapa.

Como posso garantir que o droplet permitirá o acesso deste outro servidor? Eu li que você pode copiar a chave pública criada no servidor DO para o diretório .ssh do servidor compartilhado e depois anexá-la a authorized_keys. Isso está correto?

Você não precisa copiá-lo para o ~/.ssh diretório. Você só tem que anexá-lo para authorized_keys no ~/.ssh diretório.

Mesmo se a chave for copiada, ela ainda teria uma senha que eu precisaria digitar, não? Para onde isso é salvo? Uma variável de ambiente?

Somente se você inseriu uma senha quando gerou sua chave. Você pode armazenar senhas usando ssh-agent. Corrida ssh-agent vai executar um processo em segundo plano que cuida de preencher a senha quando você ssh (ou scp etc) em um servidor diferente, mas apenas para as chaves que você tem ssh-added. Também irá produzir algumas linhas como esta:

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-mjHm7nFyhJSh/agent.21838; export SSH_AUTH_SOCK;
SSH_AGENT_PID=21839; export SSH_AGENT_PID;
echo Agent pid 21839;

Estes são comandos shell. Se você colá-los em seu shell, você será capaz de fazer uso de ssh-agent nessa concha. Você também pode fazer eval $(ssh-agent) avaliar automaticamente ssh-agentsaída pelo shell. Então você faz ssh-add(para o padrão .ssh/id_rsa chave, ou ssh-add path/to/key e insira a senha uma vez. Nesse terminal, você poderá agora ssh em outros servidores sem digitar a frase secreta, mesmo que você tenha gerado sua chave com uma frase secreta.


0



Muito obrigado por ter tempo para responder. Se eu quiser gerar uma chave para um usuário não-root, só preciso fazer login como esse usuário na caixa e gerar uma chave? Agora, se eu gerar a chave na DO BOX (A), lembre-se que meu objetivo é copiar arquivos de B para A usando o usuário de backup que criei no Servidor A. Para fazer isso, copio a chave pública do meu usuário do servidor A para o Servidor B e anexá-lo a authorized_keys? Depois disso, meu comando SCP funcionaria? Basicamente, o Servidor B precisa da chave pública, e o servidor A precisa da chave privada, correto? - NullHypothesis
Corrigir. BTW, a chave pública é inteiramente feita a partir de caracteres imprimíveis normais, então você pode simplesmente copiar e colar em ~/.ssh/authorized_keys no outro servidor. - sneep
Eu quero dar a este usuário um diretório pessoal? É um usuário normal? Eu quero restringi-los assim mesmo se alguém comprometeu o servidor B, eles não poderiam fazer muito dano - NullHypothesis
Sim, usuário normal. Você não podia colocar nada ~/.ssh/authorized_keys se não houvesse diretório inicial. Você pode fazer o login de A para B, mas não de B para A, então nada para se preocupar. - sneep
mas para confirmar, copiar a chave pública de A para B permite-me executar o SCP de B e copiar um arquivo para A? - NullHypothesis