Copiar um arquivo de um host para outro requer um daemon no host remoto, implementando algum protocolo de transmissão de arquivos em nível de aplicativo. Esta é uma exigência, não importa de qual idioma você vai falar com esse daemon remoto.
Suas opções para sistemas Linux são:
- SSH. Isso requer um daemon SSH (digamos, openssh-server) no lado remoto. Como o ssh é projetado para segurança, você terá que configurar o host remoto para autenticá-lo com uma senha ou uma chave privada. Na verdade, copiar o arquivo pode ser feito através do utilitário scp ou da biblioteca do cliente ssh (jsch seria um exemplo disso).
- NFS. O host remoto instala um daemon (por exemplo, samba) e compartilha alguns arquivos. Seu computador local (o pacote cifs-utils é capaz disso) pode montar um local remoto no sistema de arquivos local. Dessa forma, você pode copiar um arquivo para o host remoto apenas copiando o arquivo localmente. A autenticação é opcional, os arquivos são enviados em linha pela rede.
- FTP. Um servidor ftp é instalado no lado remoto e configurado para permitir o acesso a determinados locais para determinados usuários. Você pode então usar qualquer cliente ftp ou alguma biblioteca cliente ftp (biblioteca commons-net do projeto Apache, por exemplo) para conectar-se ao servidor ftp remoto e copiar os arquivos. A autenticação é opcional, os arquivos são enviados em linha pela rede.
Tudo isso parece ser muito trabalhoso, e de fato é, porque não há um único protocolo amplamente adotado e padronizado que seria implementado e configurado de maneira imediata na maioria dos sistemas.