J'ai une machine à quelques sauts et je dois configurer la redirection de port afin de transférer des fichiers.
Edit: Pour être clair, plusieurs sauts sont nécessaires pour accéder à la machine distante. Depuis ma machine, j'ai configuré un VPN, où je peux accéder à 10.255.xx - c'est la seule machine à laquelle je peux me connecter via le VPN. Une fois connecté à .xx, je peux ensuite me connecter à d'autres machines - .yy étant l'une d'entre elles.
Depuis ma machine:
ssh -L 4567:localhost:4567 [email protected]
Puis à partir de cette machine:
ssh -L 4567:localhost:22 [email protected]
Je peux alors
scp -P 4567 me@localhost:/path/to/large/file.gz .
J'ai quitté cette nuit, pour constater que le transfert est mort à un moment donné.
J'ai vu quelques suggestions pour utiliser rsync sur ssh pour reprendre le transfert, mais je ne sais pas comment configurer cela. Est-ce possible?
ssh
rsync
file-transfer
scp
ssh-tunnel
chris
la source
la source
scp [email protected]:/path/to/large/file.gz .
exactement la même chose? Quelle version de scp (ssh) est installée sur le client et le serveur?Réponses:
Avec certaines versions de scp (la version sur l'ordinateur source semble être la clé), il suffit de réexécuter la commande scp pour reprendre le transfert. Mais fais attention! Si votre version ne prend pas en charge les transferts partiels, le fichier partiel sera simplement écrasé.
Les commutateurs rsync suivants sont pratiques pour reprendre un transfert interrompu si scp ne le prend pas en charge:
La commande
devrait avoir l'effet souhaité. Notez que le
-p
commutateur doit être en minuscules pour ssh.la source
10.255.y.y
c'était l'ordinateur client.Utiliser sftp au lieu de scp
Dans ton cas:
Depuis la page de manuel sftp:
la source
rsync utilise ssh par défaut, vous devrez peut-être spécifier la commande ssh exacte à l'aide du commutateur -e de rsync. Il a également un --partial qui devrait conserver le fichier incomplet afin qu'il puisse reprendre le transfert.
la source
Je ne vois pas vraiment à quoi servent vos tunnels, alors voici comment j'irais à résoudre votre problème:
cela ouvre un tunnel inverse de la machine locale (localhost) à la machine distante (remotehost). $ tunnelPort est le port sur lequel se trouve le tunnel sur remotehost. $ localSSHPort est le port sur lequel s'exécute le sshd local et $ remoteSSHPort est l'endroit où sshd de remotehost écoute.
Maintenant que vous êtes à l'intérieur du tunnel (inversé!), Vous pouvez plus ou moins faire ce que Dennis a proposé:
les drapeaux -a et -z sont expliqués dans la page de manuel de rsync, donc je ne les développerai pas. Ce qui se passe maintenant, c'est que lorsque vous exécutez rsync sur remotehost comme ci-dessus, il pousse toutes les données dans le port $ tunnelPort qui est ensuite transmis au sshd $ localSSHPort de votre hôte local.
J'espère que cela a aidé.
la source