Fichier local SSH SCP vers distant dans le terminal Mac Os X

90

J'essaie de copier un fichier local «magento.tar.gz» de ma machine locale vers un serveur distant en utilisant SSH via un VPN. Ceci se connecte à l'adresse IP interne de la machine virtuelle que j'ai utilisée ici comme xx.xxxx.

J'ai un accès 'sudo' complet sur le compte SSH, donc il ne devrait pas y avoir de problème de copie. J'ai essayé ce qui suit:

J'ai essayé ce qui suit (le fichier magento.tar.gz est déjà dans le répertoire racine local)

sudo scp magento.tar.gz [email protected]/var/www/

Cela me demande de taper mon mot de passe local. Retourne ensuitecp: [email protected]/var/www: Not a directory

sudo scp /Users/myname/magento.tar.gz [email protected]/var/www/

Renvoie la même chose.

Dois-je inclure un SSH n'importe où?

Dois-je d'abord me connecter via SSH au site?

Note latérale: j'ai réussi à me connecter via SSH au serveur, à parcourir le répertoire et à créer un dossier et à le supprimer en utilisant sudo mkdiretc. donc j'ai définitivement les autorisations.

James
la source

Réponses:

202

Au début, vous devez ajouter :après l'adresse IP pour indiquer que le chemin est le suivant:

scp magento.tar.gz [email protected]:/var/www

Je ne pense pas que vous devez sudole scp. Dans ce cas, cela n'affecte pas la machine distante, uniquement la commande locale.

Ensuite, si votre user@ xx.xxxx n'a pas d'accès en écriture, /var/wwwvous devez le faire en 2 fois:

Copier sur le serveur distant dans votre dossier de départ ( :représente votre dossier de départ distant, utilisez :subfolder/si nécessaire, ou :/home/user/pour le chemin complet):

scp magento.tar.gz [email protected]:

Puis SSH et déplacez le fichier:

ssh [email protected]
sudo mv magento.tar.gz /var/www
JScoobyCed
la source
Merci. Je l'ai essayé avec les deux points mais j'ai obtenu l'autorisation refusée - j'ai été informé que j'avais un accès sudo complet, donc les autorisations ne devraient pas être un problème.
James
1
Merci!!! J'ai dû SSH la télécommande et pwd pour trouver dans quel répertoire par défaut j'étais emmené, qui était / home / username - scp magento.tar.gz [email protected]: / home / username / a fait l'affaire!
James
19

Juste pour clarifier la réponse donnée par JScoobyCed, la commande scp ne peut pas copier des fichiers dans des répertoires qui nécessitent une autorisation administrative. Cependant, vous pouvez utiliser la commande scp pour copier dans des répertoires appartenant à l'utilisateur distant.

Ainsi, pour copier dans un répertoire nécessitant des privilèges root, vous devez d'abord copier ce fichier dans un répertoire appartenant à l'utilisateur distant à l'aide de la commande scp. Ensuite, vous devez vous connecter au compte distant à l'aide de ssh. Une fois connecté, vous pouvez ensuite déplacer le fichier vers le répertoire de votre choix en utilisant la commande sudo mv. En bref, les commandes à utiliser sont les suivantes:

À l'aide de scp, copiez le fichier dans un répertoire du compte de l'utilisateur distant, par exemple le répertoire Documents:

scp /path/to/your/local/file remoteUser@some_address:/home/remoteUser/Documents

Ensuite, connectez-vous au compte de l'utilisateur distant à l'aide de ssh, puis déplacez le fichier vers un répertoire restreint à l'aide de sudo:

ssh remoteUser@some_address
sudo mv /home/remoteUser/Documents/file /var/www
légende12
la source
0

Vérifiez que votre nom de fichier ne contient pas non :plus. J'ai trouvé que je devais le faire mv blah-07-08-17-02:69.txt no_colons.txt, scp no-colons.txt server:puis n'oubliez pas de mvrevenir sur le serveur. Juste au cas où ce serait un problème.

pjammer
la source
1
Ce n'est pas un problème si vous ajoutez simplement ./avant le nom local, commescp ./blah-07-08-17-02:69.txt server:
Anders Tornblad