Suponho que você queira se conectar de qualquer lugar, portanto, não é possível garantir o endereço IP público no qual o tablet estará (ou mesmo se isso permitir conexões ao tablet a partir do servidor, já que é improvável que seja um endereço público), caso contrário, você deve instalar um deamon SSH e ash rsync para se conectar dessa forma. Caso contrário, um "túnel reverso" pode ser o que você está procurando.
Se o seu cliente SSH no dispositivo Android suportar o encaminhamento reverso de portas, procure usá-lo para criar um túnel. Por exemplo, com o openssh você pode especificar -R 2222:127.0.0.1:22
na linha de comando, o que significaria que as coisas no servidor podem se conectar a um servidor SSHd no tablet (escutando na porta 22 no 127.0.0.1 até o tablet) conectando-se a porta 2222 em 127.0.0.1 (é importante perceber que a partir do código no servidor PoV 127.0.0.1 é o servidor, o 127.0.0.1 na linha de comando é relativo ao cliente SSH ). Então, se isso funciona, você pode, em seu script de servidor, executar algo como rsync [email protected]:/path/to/stuff/on/tablet /path/to/destination/on/server -e 'ssh -p 2222' -a --compress
. A opção -e
é usada aqui para especificar a porta não padrão para o SSH se conectar.
Algumas notas mais detalhadas sobre o que foi dito acima (desculpe, isso é um pouco de "dump da mente" e pode não ser bem administrado, embora esperamos que ele ajude você a experimentar e / ou procure exemplos úteis em outros lugares)
- Isso é chamado de um túnel reverso ou remoto porque é mais comum configurar redirecionamentos do cliente para o servidor (não o servidor para o cliente, conforme necessário aqui) ). Um túnel local (do lado do cliente para algo do lado do servidor) é configurado usando a opção
-L
em vez de-R
(pelo menos com o OpenSSH, verifique a documentação do servidor para confirmação). - Você pode fornecer muitas opções
-R
e / ou-L
na mesma linha de comando com o OpenSSH, para poder configurar mais de um túnel em qualquer direção usando uma única conexão SSH. - Você pode precisa de
GatewayPorts yes
ou similar especificado nosshd_config
do servidor para que os túneis reversos funcionem. Verifique a documentação da implementação do SSHd para detalhes. - Não importa de onde o tablet liga: o túnel criado pelo encaminhamento de porta sempre apontará (via conexão SSH) de volta para seu cliente SSH. Você pode até mesmo apontar para algum outro recurso local com um encaminhamento como
-R 8888:192.168.42.42:80
, o que significará conexões com 127.0.0.1:8888 no servidor, passará pelo túnel SSH e atingirá a porta 80 em qualquer máquina que responder a 192.168.42.42 na rede em que o tablet está atualmente (isso pode até ser outra máquina remota em um local completamente diferente). - Você precisará que o cliente rsync no tablet para o servidor possa executá-lo pelo SSH através do túnel.
- O exemplo acima usa uma porta não padrão, pois é provável que o SSHd esteja escutando na porta 22 em todas as interfaces no servidor. Se você estiver se conectando ao servidor como root, usar um número de porta abaixo de 1024 (ou seja, 222 em vez de 2222) será mais seguro, embora você deva evitar conectar-se a recursos remotos como raiz, sempre que possível. A lista de pedidos em uma porta abaixo de 1024 é bloqueada para usuários não priveligiados por padrão em sistemas da Uinx-a-like.
- Se você não quiser executar um daemon SSH no tablet, poderá executar uma instância do rsync no modo daemon. O encaminhamento de porta seria algo como
537:127.0.0.1:537
ou (se você estiver executando o rsync no modo de servidor no servidor já para que a porta 537 seja executada, algo como5537:127.0.0.1:537
e adicione-p 5537
ao comando rsync para informar o servidor não está no lugar padrão). - Se o SSHd do seu servidor não escutar na porta 22 em todas as interfaces / endereços do servidor, você poderá usar 22 em vez de uma porta não padrão especificando que o encapsulamento deve atuar interface adicionando esse endereço ao início da parte
-R
, assim:-R 192.168.1.1:22:127.0.0.1:22
. O endereço de ligação é relativo ao servidor, portanto, não precisa ser algo publicamente roteável (na verdade, um endereço em uma interface fictícia, mesmo que o resto da LAN local não possa ver, funcionaria). Você definitivamente precisa deGatewayPorts
para que isso funcione com o OpenSSH. Se você nãoGatewayPorts
on (ou seja, se estiver usando 127.0.0.1 do lado do servidor e uma porta não padrão e isso funcionar com a implementação SSHd do seu servidor semGatewayPorts yes
ou equivelant), deixe isto fora: é mais seguro assim. - Eu assumi o IPv4 em todos os itens acima. Se o seu cliente e servidor o suportarem e suas redes em cada extremidade forem configuradas apropriadamente, o endereçamento IPv6 também funcionará.
Túneis através de SSH configurados desta forma podem ser muito poderosos depois de você ter jogado com eles e descobrir o que é possível e como fazê-lo, assumindo que as implementações SSH / SSHd de seu cliente e servidor suportam tudo isso.