J'ai jeté un coup d'œil sur d'autres questions ici et sur divers tutoriels sur l'utilisation de scp sur Internet, mais je ne peux pas déterminer ce qui ne va pas.
J'utilise Linux Mint et j'essaie de comprendre le fonctionnement de scp .
J'ai un fichier fichier.ext (sur mon ordinateur) dans le répertoire / home / nom / répertoire /
Je me connecte à une machine distante à l'aide de ssh , comme:
ssh -p 2222 username@domain
il me demande le mot de passe et le shell affiche:
username@domain ~ $
maintenant, si je lance la commande (avant d’exécuter ssh, j’étais dans le répertoire local / home / name / dir ):
scp -r -P 2222 file.ext username@domain
la sortie est:
cp: cannot stat ‘file.ext’: No such file or directory
Même résultat si au lieu de fichier.ext j'écris le chemin complet
scp -r -P 2222 /home/name/dir/file.ext username@domain
De plus, l'administrateur du serveur m'a dit que je téléchargerais le fichier dans mon répertoire personnel distant (au lieu de root), comme suit:
scp -r -P 2222 file.ext username@domain:~/
mais quand je le fais et appuie sur "Entrée" rien ne se passe, comme si le shell attendait une entrée supplémentaire.
Résumé de mes problèmes:
- cp: aucun fichier ou répertoire de ce type
- coquille "collée" sur ~ /
Aucune suggestion?
localuser@machineA: ssh -p 2222 username@domain
(pour indiquer que vous exécutez la commande ssh en tant qu'utilisateur local sur la machineA)scp
, le côté distant doit toujours contenir les deux points (par exempleremotehost:/tmp
), sinon il ne fera qu'une copie ordinaire (scp /tmp/foo.txt example.com
sera copié/tmp/foo.txt
dans un fichier localexample.com
)-r
indicateur, car cela n'est pas nécessaire pour la copie de fichiers individuels (il est utilisé pour copier des répertoires de manière récursive )Réponses:
Vous devez exécuter la
scp
commande à partir de la machine locale et non de la télécommande. Vous n'avez pas besoin dussh
tout:Vous n'avez pas non plus besoin du
-r
:Si vous êtes déjà connecté à la machine distante et souhaitez copier à partir de votre local, vous devez vous assurer que votre machine locale est accessible via Internet et qu'elle a été
ssh
configurée. Je ne pense pas que c'est ce que vous cherchez, mais si c'est le cas, lancez-le à partir de la télécommande:la source
Je propose deux méthodes de chargement de fichier haut / bas entre la machine distante et la machine locale (j'utilise Mac air):
Dans ce cas, je veux monter / descendre "11.jpeg" entre local et distant:
1.
Pour atteindre le même objectif lorsque vous vous connectez à SSH , vous devez d'abord définir «Préférences système> partage> connexion à distance> tous les utilisateurs (je ne suis pas sûr 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, tapez: ssh username @ xxxxxx, puis tapez la commande ci-dessous:
nom d'utilisateur scp @ domaine: /home/xxx/xxx/11/11.jpeg nom d'utilisateur @ xxxxxx: / Utilisateurs / nom d'utilisateur / Bureau /
Cette commande ci-dessus sert à télécharger un fichier de local à local lorsque vous vous connectez à ssh. Changez simplement le chemin d'accès lorsque vous souhaitez télécharger un fichier.
la source
Si vous exécutez cette commande scp sur la machine distante, celle-ci est recherchée en
file.ext
tant que fichier "local", c'est- à- dire sur la machine distante.Pour copier un fichier de la machine distante vers la machine locale, utilisez-le
scp -P 2222 username@domain:dir/file.ext localdir
(en supposant qu'il sefile.ext
trouve~/dir
sur l'ordinateur distant, comme dans votre exemple). Si vous utilisezscp
la machine distante, inversez "local" et "remote".la source
Utilisez la
scp
commandeSi vous voulez transférer un dossier, juste
zip
le premier, nous le pouvonsunzip
plus tard.Depuis votre ordinateur, lancez ceci:
Voici
root
votre compte et10.145.198.100
l'adresse IP du serveur distant. Nous allons copierthe_file
dans un~/
dossier de la télécommande.Décompressez le fichier:
la source
root
même un accès SSH sur la machine distante? C'est assez peu sécurisé. Mieux vaut utiliser un usage ordinaire et faire ensuitesudo
tout ce que root doit faire sur cette machine.Juste une petite contribution, peut-être que cela peut aider les débutants comme moi: le chemin du répertoire distant devrait être écrit comme suit:
username@domain:~/remote_directory
Ce que je veux souligner ici, c’est que nous devrions toujours ajouter que
:~/
la source
Solution pour copier des fichiers de
Linux client
àLinux Server
Vérifiez si
sshd
fonctionne sur votre serveur en utilisant:ps aux | grep sshd
Si ce n'est pas le cas,
OpenSSH
utilisezsudo apt-get install openssh-server openssh-client
https://www.tecmint.com/install-openssh-server-in-linux/Redémarrez votre serveur et vérifiez qu'il
sshd
fonctionne à l'aide deps aux | grep sshd
Si vous avez besoin, vous pouvez configurer votre
/etc/ssh/sshd_config
fichier, mais ce n'est pas nécessaire pour des configurations simplesvérifier que les ports sont ouverts en utilisant
netcat
nc -v -z 127.0.0.1 22
Pour copier des fichiers d'un
Linux
client sur unLinux
client, utilisez 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 de
Linux client
`WindowsIl existe plusieurs clients pour exécuter des serveurs SSH sous Windows, tels que OpenSSH à partir de MS.
MobaSSH
Bitvise serveur SSH
Installez l’un des serveurs ci-dessus et assurez-vous que le port 22 est ouvert à l’aide de
Pare-feu netsh advfirewall add nom de règle = "SSH Port 22" dir = in action = autoriser le protocole = UDP localport = 22
Pare-feu netsh advfirewall add nom de règle = "SSH Port 22" dir = out action = autoriser le protocole = UDP localport = 22
Pare-feu advfirewall netsh add nom de règle = "SSH Port 22" dir = in action = autoriser le protocole = TCP localport = 22
Pare-feu advfirewall netsh add nom de règle = "SSH Port 22" dir = out action = autoriser le protocole = TCP localport = 22
netsh advfirewall définit l'état allprofiles
Comparaisons de ces serveurs:
Bitvise serveur SSH
Fournit presque proche de l'
cmd
invite native , l'powershell
invite, l'auto-complétionFournit des fonctionnalités supplémentaires pour la personnalisation, si vous avez besoin d'une utilisation avancée
La personnalisation des utilisateurs pour les besoins simples est égale à 0. Je me suis lancée dans les 2 minutes, après avoir passé beaucoup de temps à essayer d’obtenir
MobaSSH
etOpenSSH
de travailler.Pour copier des fichiers avec 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 ses nombreuses fonctionnalités et de sa grande intégration, le prix en vaut la peine
MobaSSH:
fournit un shell linux sur windows linux où des commandes simples telles que
ls
,cp
,find
etc travail, semblable àMINGW64
vous pouvez accéder
cmd
etpowershell
directement en tapantcmd
oupowershell
Le support Unicode est faible. L'encodage n'est pas correct. Par exemple, si vous essayez de démarrer
Python
interpréteur, cela plantera. Vous devrez modifier l'encodage manuellement à l'aide de ( https://stackoverflow.com/a/12834315/4752883 ):chcp 65001
set PYTHONIOENCONDING=utf-8
puis au démarrage de l'invite Python.L'avantage de MobaSSH est qu'il dispose d'une interface utilisateur très simple, et
scp
etssh
bien intégré. Donc, va travailler pour des cas d'utilisation simplesPour copier des fichiers d’un
Linux
client sur unWindows
serveur en cours d’exécutionMobaSSH
: usescp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md
Ceci est dû auMobaSSH
faitcygwin
que ses lecteurs sont mappés de la même manière que lescygwin
lecteurs -s sont mappés.Utilisez les ordinateurs virtuels de Microsoft avec OpenSSHv6.7 installés à partir de https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ . OpenSSHv6.7 est déjà installé.
Son très buggy, et vous aurez besoin de le personnaliser fortement.
La complétion de la commande ne fonctionne pas
Il laissera des espaces vides lorsque vous déplacez le curseur sur le terminal
Python ne fonctionne pas
Les versions ultérieures d'OpenSSH ont peut-être été améliorées. D'autres MS semblent rendre OpenSSH disponible via
Optional Features
https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/la source
Si vous êtes sur OSX ...
Quand j'ai essayé de l'exécuter avec username @ local: / file_directory ...
J'ai eu l'erreur suivante:
Solution
Sur mon Mac, je devais effectuer les opérations suivantes pour configurer localement
ssh
:Cela a ensuite fourni le nom d'utilisateur @ adresse ip.
la source
J'ai eu ce même problème aujourd'hui sur MAC.
Tapez la commande suivante:
la source