SCP um arquivo entre dois servidores

0

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:

link

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

Eu 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 fazê-lo com um script para que ele não o faça. • peça uma senha para que ela 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 ler em SSH / public / private keys, mas ainda não sinto que estou progredindo: (

Obrigado!

    
por NullHypothesis 23.03.2018 / 15:03

1 resposta

0

Do I need to create a different SSH key for this user? I would do that on the DO server? I can't even log in as this new user because it says access denied (public key) when I try to login. I can log in as root, however, when I use that key.

Você pode 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 usuário que não seja root . (E talvez não inserir uma senha, senão você terá que entender ssh-agent (veja abaixo).) Você geraria a chave no servidor DO e então anexaria a chave pública ... veja a próxima etapa.

How can I ensure the droplet will allow access from this other server? I read that you can copy the public key created on the DO server to the shared server's .ssh dir and then append it to authorized_keys. Is that correct?

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

Even if the key is copied over, it would still have a password as well that I would need to type in, no? Where does that get saved to? An environment variable?

Somente se você inseriu uma senha quando gerou sua chave. Você pode armazenar senhas usando ssh-agent . Executar ssh-agent executará um processo em segundo plano que cuida do preenchimento da senha quando você ssh (ou scp etc.) em um servidor diferente, mas apenas para chaves que você tem ssh-add ed. 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 do shell. Se você colá-los em seu shell, poderá usar ssh-agent nesse shell. Você também pode fazer eval $(ssh-agent) para avaliar automaticamente a saída de ssh-agent pelo shell. Em seguida, você usa ssh-add (para a chave .ssh/id_rsa padrão ou ssh-add path/to/key e insere a frase secreta uma vez. Nesse terminal, você poderá ssh em outros servidores sem inserir a frase secreta, mesmo que tenha gerado chave com uma senha.

    
por 23.03.2018 / 15:20