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
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:
-
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 -
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
roota-t-il même un accès SSH sur la machine distante? Ce ‘ est assez peu sûr. Mieux vaut utiliser une utilisation ordinaire, puissudopour 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
-
Vérifiez si
sshdfonctionne sur votre serveur en utilisant:ps aux | grep sshd -
Sinon, installez
OpenSSHen utilisantsudo apt-get install openssh-server openssh-clienthttps://www.tecmint.com/install-openssh-server-in-linux/ -
Redémarrez votre serveur et vérifiez que
sshdfonctionne avecps aux | grep sshd -
Si vous en avez besoin, vous pouvez configurer votre fichier
/etc/ssh/sshd_config, mais ce nest pas nécessaire pour les configurations simples -
vérifier que e Les ports sont ouverts en utilisant
netcat:nc -v -z 127.0.0.1 22 -
Pour copier des fichiers depuis un
Linuxclient vers un clientLinuxutilise scp comme suitscp ~/filename.md [email protected]:~/folder/filename.md -
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
-
Il existe plusieurs clients pour exécuter SSH serveurs sous Windows, tels que:
-
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=22netsh 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=22netsh advfirewall set allprofiles state off -
Comparaisons de ces serveurs:
Serveur Bitvise SSH
-
Fournit presque une invite
cmdnative, une invitepowershell, une saisie semi-automatique -
Fournit des capacités supplémentaires pour la personnalisation, si vous avez besoin dune utilisation avancée
-
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
MobaSSHetOpenSSH. -
Pour copier des fichiers à laide de scp utilisez:
scp ~/filename.md [email protected]:/C/Users/username/filename.md -
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:
-
fournit un Linux shell sous Windows où des commandes Linux simples telles que
ls,cp,find, etc., travail, similaire àMINGW64 -
vous pouvez accéder à
cmdetpowershelldirectement en tapantcmdoupowershell -
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 65001set PYTHONIOENCONDING=utf-8puis lancez linvite Python -
Lavantage de MobaSSH est quil a une interface utilisateur très simple, et
scpetsshet bien intégré. Cela fonctionnera pour des cas dutilisation simples -
Pour copier des fichiers dun client Linux vers un serveur Windows exécutant
MobaSSH: utilisezscp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.mdEn effet,MobaSSHest basé sur Cygwin et ses lecteurs sont mappés de la même manièrecygwin– 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é.
-
Cest très bogué, et vous aurez besoin de le personnaliser fortement.
-
La complétion de la commande ne fonctionne pas
-
Elle laissera des espaces vides lorsque vous déplacez le curseur sur le terminal
-
Python ne fonctionne pas
-
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/
localuser@machineA: ssh -p 2222 username@domain(pour indiquer que vous exécutez la commande ssh en tant quutilisateur local sur machineA)scp, le Le côté distant doit toujours contenir les deux points (par exempleremotehost:/tmp), sinon il fera juste une copie ordinaire (scp /tmp/foo.txt example.comcopiera/tmp/foo.txtdans un fichier localexample.com)-r, car cela nest pas nécessaire pour copier des fichiers uniques (il ‘ est utilisé pour récursivement copier des répertoires)