Utilisez scp pour transférer un fichier du répertoire local X vers le répertoire distant Y

Jai jeté un coup dœil à dautres questions ici et à divers tutoriels sur lutilisation de scp sur Internet, mais je ne parviens pas à trouver ce qui ne va pas.

Jutilise Linux Mint et jessaie de comprendre comment scp fonctionne.

Je « ai un fichier file.ext (sur mon ordinateur) dans le répertoire / home / name / dir /

Je me connecte à une machine distante utilisant ssh , comme:

ssh -p 2222 username@domain 

il me demande le mot de passe et le shell affiche:

username@domain ~ $ 

maintenant, si jémets la commande (avant dexécuter ssh, jétais dans le répertoire local / home / name / dir ):

scp -r -P 2222 file.ext username@domain 

sortie est:

cp: cannot stat ‘file.ext’: No such file or directory 

Même résultat si au lieu de file.ext jécris le chemin complet

scp -r -P 2222 /home/name/dir/file.ext username@domain 

De plus, ladministrateur du serveur ma dit que je téléchargerais le fichier dans mon répertoire personnel distant (au lieu de root), comme:

scp -r -P 2222 file.ext username@domain:~/ 

mais quand je le fais et que jappuie sur « Entrée », rien ne se passe, comme si le shell attendait dautres entrées.

Résumé de mes problèmes:

  • cp: aucun fichier ou répertoire de ce type
  • shell « bloqué » sur ~ /

Des suggestions?

Commentaires

  • il ‘ ne sait pas si votre problème est uniquement lié au fait dêtre sur la mauvaise machine … pourriez-vous sil vous plaît préfixer chaque commande avec lhôte sur lequel vous exécutez? par exemple. localuser@machineA: ssh -p 2222 username@domain (pour indiquer que vous exécutez la commande ssh en tant quutilisateur local sur machineA)
  • lors de lutilisation de scp, le Le côté distant doit toujours contenir les deux points (par exemple remotehost:/tmp), sinon il fera juste une copie ordinaire (scp /tmp/foo.txt example.com copiera /tmp/foo.txt dans un fichier local example.com)
  • supprimera le -r, car cela nest pas nécessaire pour copier des fichiers uniques (il ‘ est utilisé pour récursivement copier des répertoires)
  • Exécutez-vous la commande scp dans la session sshe ? Cela aurait du sens si vous êtes sur la machine locale.

Answer

Vous devez exécuter le scp depuis la machine locale, pas sur la télécommande. Vous navez pas du tout besoin du ssh:

dragonmnl@local $ scp -P 2222 file.ext username@domain:~/ 

Vous navez pas non plus besoin du -r:

 -r Recursively copy entire directories. 

Si vous êtes déjà connecté à la machine distante et que vous souhaitez copier depuis votre local, vous devez faire assurez-vous que votre machine locale est accessible via Internet et a ssh configuré. Je ne pense pas que c’est ce que vous recherchez, mais si c’est le cas, lancez-le simplement à partir de la télécommande:

username@domain $ scp dragonmnl@local:/path/to/file.ext ~/ 

Commentaires

  • merci. le problème était que jessayais dexécuter scp dans une session ssh. maintenant ça marche!

Réponse

Je propose deux méthodes de téléchargement de fichier entre la machine distante et la machine locale (jutilise Mac Air):

Dans ce cas, je veux monter / descendre 11.jpeg entre local et distant:

  1. Copier les fichiers sur le service dans le répertoire local: vous devez être dans le terminal bash local pour exécuter cette commande, pas lorsque vous êtes dans ssh!

    scp username@domain:/home/xxx/xxx/11.jpeg /Users/username/Desktop/ 

    copier les fichiers dans le répertoire local vers service distant: vous devez également être dans le terminal bash local

    scp /Users/username/Desktop/11.jpeg username@domain:/home/xxx/xxx 
  2. Pour atteindre la même intention lorsque vous vous connectez au SSH , vous devez dabord définir  » Préférences système > partage > connexion à distance > tous les utilisateurs (je ne sais pas si vous devez définir pour  » tous les utilisateurs « , mais cela fonctionne dans cette situation) »le Mac vous le dira  » Pour vous connecter à cet ordinateur à distance, saisissez:

    ssh username@xxxxxx, then type in the command below: scp username@domain:/home/xxx/xxx/11.jpeg username@xxxxxx:/Users/username/Desktop/** 

Cette commande ci-dessus permet de télécharger un fichier de distant à local lorsque vous vous connectez à ssh, changez simplement les deux chemins lorsque vous souhaitez télécharger un fichier.

Commentaires

  • Enfin, je trouve que Filezilla est probablement le plus pratique dans le travail quotidien ~~

Réponse

Utilisez la commande scp

Si vous souhaitez transférer un dossier, zip dabord, nous pouvons unzip plus tard.

À partir de votre ordinateur, exécutez ceci:

$ scp your_path_to_the_file/the_file [email protected]:~/ 

Ici, root est votre compte et 10.145.198.100 est le Adresse IP du serveur distant. Nous allons copier the_file dans le dossier ~/ dans le dossier distant.

Décompressez le fichier:

$ unzip the_zip_file.zip -d destination_folder 

Commentaires

  • Pourquoi root a-t-il même un accès SSH sur la machine distante? Ce ‘ est assez peu sûr. Mieux vaut utiliser une utilisation ordinaire, puis sudo pour faire tout ce que root a à faire sur cette machine.

Réponse

Si vous « exécutez cette commande scp sur la machine distante, elle recherche file.ext comme fichier » local « , cest-à-dire sur la machine distante.

Pour copier un fichier de la machine distante vers la machine locale, utilisez scp -P 2222 username@domain:dir/file.ext localdir (en supposant que file.ext se trouve dans ~/dir sur lordinateur distant, comme dans votre exemple) . Si vous exécutez scp sur la machine distante, inversez « local » et « distant ».

Commentaires

  • LOP veut copier du local vers le distant, voir le titre de lOP ‘.
  • Oups, je suppose que vous ‘ a raison. Mais il ‘ le fait apparemment à lenvers …

Réponse

Juste une petite contribution, peut-être que cela peut aider les débutants comme moi: le chemin vers le répertoire distant doit être écrit comme ceci: username@domain:~/remote_directory

Ce que je veux souligner ici, cest que nous devrions toujours ajouter que :~/

Réponse

Solution pour copier des fichiers du client Linux vers le serveur Linux

  1. Vérifiez si sshd fonctionne sur votre serveur en utilisant: ps aux | grep sshd

  2. Sinon, installez OpenSSH en utilisant sudo apt-get install openssh-server openssh-client https://www.tecmint.com/install-openssh-server-in-linux/

  3. Redémarrez votre serveur et vérifiez que sshd fonctionne avec ps aux | grep sshd

  4. Si vous en avez besoin, vous pouvez configurer votre fichier /etc/ssh/sshd_config, mais ce nest pas nécessaire pour les configurations simples

  5. vérifier que e Les ports sont ouverts en utilisant netcat: nc -v -z 127.0.0.1 22

  6. Pour copier des fichiers depuis un Linux client vers un client Linux utilise scp comme suit scp ~/filename.md [email protected]:~/folder/filename.md

  7. Pour vérifier que le fichier a été copié, utilisez ssh [email protected] et indiquez votre mot de passe.

Solution pour copier des fichiers du client Linux vers Windows

  1. Il existe plusieurs clients pour exécuter SSH serveurs sous Windows, tels que:

  2. Installez lun des serveurs ci-dessus et assurez-vous que le port 22 est ouvert en utilisant

    netsh advfirewall firewall add rule name="SSH Port 22" dir=in action=allow protocol=UDP localport=22 netsh advfirewall firewall add rule name="SSH Port 22" dir=out action=allow protocol=UDP localport=22 
    netsh advfirewall firewall add rule name="SSH Port 22" dir=in action=allow protocol=TCP localport=22 netsh advfirewall firewall add rule name="SSH Port 22" dir=out action=allow protocol=TCP localport=22 
    netsh advfirewall set allprofiles state off 
  3. Comparaisons de ces serveurs:

    Serveur Bitvise SSH

    1. Fournit presque une invite cmd native, une invite powershell, une saisie semi-automatique

    2. Fournit des capacités supplémentaires pour la personnalisation, si vous avez besoin dune utilisation avancée

    3. La personnalisation de lutilisateur pour des besoins simples est de 0. Jai commencé dessus en 2 minutes, après avoir passé beaucoup de temps essayer de faire fonctionner MobaSSH et OpenSSH.

    4. Pour copier des fichiers à laide de scp utilisez: scp ~/filename.md [email protected]:/C/Users/username/filename.md

    5. Gratuit pour un usage personnel, 99 $ pour un usage professionnel. En raison de tant de fonctionnalités et dune excellente intégration, le prix en vaut la peine.

    MobaSSH:

    1. fournit un Linux shell sous Windows où des commandes Linux simples telles que ls, cp, find, etc., travail, similaire à MINGW64

    2. vous pouvez accéder à cmd et powershell directement en tapant cmd ou powershell

    3. Le support Unicode est médiocre. Lencodage nest pas correct. Par exemple, si vous essayez de démarrer linterpréteur Python, il plantera. Vous devrez modifier lencodage manuellement en utilisant ( https://stackoverflow.com/a/12834315/4752883 ): chcp 65001 set PYTHONIOENCONDING=utf-8 puis lancez linvite Python

    4. Lavantage de MobaSSH est quil a une interface utilisateur très simple, et scp et ssh et bien intégré. Cela fonctionnera pour des cas dutilisation simples

    5. Pour copier des fichiers dun client Linux vers un serveur Windows exécutant MobaSSH: utilisez scp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md En effet, MobaSSH est basé sur Cygwin et ses lecteurs sont mappés de la même manière cygwin – s sont mappés.

    Utilisez des VM de Microsoft avec OpenSSHv6.7 installé à partir de https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ , OpenSSHv6.7 est déjà installé.

    1. Cest très bogué, et vous aurez besoin de le personnaliser fortement.

    2. La complétion de la commande ne fonctionne pas

    3. Elle laissera des espaces vides lorsque vous déplacez le curseur sur le terminal

    4. Python ne fonctionne pas

    5. Les versions ultérieures dOpenSSH pourraient avoir été améliorées. De plus, MS semble rendre OpenSSH disponible via  » Fonctionnalités facultatives  » https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/

Réponse

Si vous êtes sur OSX …

Quand jai essayé de lexécuter avec username @ local: / file_directory …

Jai eu lerreur suivante:

ssh: local: node name or service name not known 

Solution

Sur mon Mac, jai dû effectuer les opérations suivantes pour configurer ssh:

Préférences Système -> Internet & Réseaux -> Partage -> ENABLE Connexion à distance

Cela a ensuite fourni le nom dutilisateur @ adresse IP.

Réponse

Jai eu ce même problème aujourdhui sur MAC.

Tapez la commande suivante:

scp /local-file-path/ /-remote-location-path/ 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *