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
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, puissudo
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
-
Vérifiez si
sshd
fonctionne sur votre serveur en utilisant:ps aux | grep sshd
-
Sinon, installez
OpenSSH
en utilisantsudo apt-get install openssh-server openssh-client
https://www.tecmint.com/install-openssh-server-in-linux/ -
Redémarrez votre serveur et vérifiez que
sshd
fonctionne 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
Linux
client vers un clientLinux
utilise 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=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
-
Comparaisons de ces serveurs:
Serveur Bitvise SSH
-
Fournit presque une invite
cmd
native, 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
MobaSSH
etOpenSSH
. -
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 à
cmd
etpowershell
directement en tapantcmd
oupowershell
-
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 -
Lavantage de MobaSSH est quil a une interface utilisateur très simple, et
scp
etssh
et 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.md
En effet,MobaSSH
est 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.com
copiera/tmp/foo.txt
dans 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)