He echado un vistazo a otras preguntas aquí y a varios tutoriales de «uso de scp» en Internet, pero no puedo resolver qué está mal.
Estoy usando Linux Mint y estoy tratando de averiguar cómo scp funciona.
Tengo un archivo file.ext (en mi computadora) en el directorio / home / name / dir /
Me conecto a una máquina remota que usa ssh , como:
ssh -p 2222 username@domain
me pide la contraseña y el shell muestra:
username@domain ~ $
ahora, si emito el comando (antes de ejecutar ssh estaba en el directorio local / home / name / dir ):
scp -r -P 2222 file.ext username@domain
salida es:
cp: cannot stat ‘file.ext’: No such file or directory
El mismo resultado si en lugar de file.ext escribo la ruta completa
scp -r -P 2222 /home/name/dir/file.ext username@domain
Además, el administrador del servidor me dijo que subiré el archivo a mi directorio de inicio remoto (en lugar de root), como:
scp -r -P 2222 file.ext username@domain:~/
pero cuando lo hago y presiono «Enter» no pasa nada, como si el shell estuviera esperando más datos.
Resumen de mis problemas:
- cp: no existe tal archivo o directorio
- shell «atascado» en ~ /
¿Alguna sugerencia?
Comentarios
Respuesta
Necesitas ejecutar scp
comando desde la máquina local, no desde la remota. No necesita el ssh
en absoluto:
dragonmnl@local $ scp -P 2222 file.ext username@domain:~/
Tampoco necesita el -r
:
-r Recursively copy entire directories.
Si ya ha iniciado sesión en la máquina remota y desea copiar desde su local, debe hacer asegúrese de que su máquina local sea accesible a través de Internet y de que esté ssh
configurada. No creo que esto sea lo que buscas, pero si lo es, simplemente ejecuta esto desde el control remoto:
username@domain $ scp dragonmnl@local:/path/to/file.ext ~/
Comentarios
- gracias. El problema era que estaba intentando ejecutar scp dentro de la sesión ssh. ¡Ahora funciona!
Responder
Proporciono dos métodos para subir / bajar archivos entre la máquina local y remota (yo uso Mac air):
En este caso, quiero subir / bajar 11.jpeg
entre local y remoto:
-
Copiar archivos en servicio al directorio local: debe estar en la terminal bash local para ejecutar este comando, ¡no cuando esté en ssh!
scp username@domain:/home/xxx/xxx/11.jpeg /Users/username/Desktop/
copiar archivos en el directorio local a servicio remoto: también debe estar en el terminal bash local
scp /Users/username/Desktop/11.jpeg username@domain:/home/xxx/xxx
-
Para lograr la misma intención cuando inicia sesión en SSH , primero debe configurar » Preferencias del sistema > compartir > inicio de sesión remoto > todos los usuarios (no estoy seguro si debe configurar para » todos los usuarios «, pero funciona en esta situación) ”la Mac le dirá » Para iniciar sesión en esta computadora de forma remota, escriba:
ssh username@xxxxxx, then type in the command below: scp username@domain:/home/xxx/xxx/11.jpeg username@xxxxxx:/Users/username/Desktop/**
Este comando anterior es para descargar archivos de remoto a local cuando inicie sesión en ssh, simplemente cambie las dos rutas cuando desee cargar el archivo.
Comentarios
- Finalmente, encuentro que Filezilla es probablemente el más conveniente en el trabajo diario ~~
Responder
Utilice el comando scp
Si desea transferir una carpeta, solo zip
primero, podemos unzip
luego.
Desde tu computadora, ejecuta esto:
$ scp your_path_to_the_file/the_file [email protected]:~/
Aquí, root
es su cuenta y 10.145.198.100
es la dirección IP del servidor remoto. Vamos a copiar the_file
a la carpeta ~/
en el control remoto.
Descomprimir el archivo:
$ unzip the_zip_file.zip -d destination_folder
Comentarios
- ¿Por qué
root
incluso tiene acceso SSH en la máquina remota? Eso ‘ es bastante inseguro. Es mejor usar un uso ordinario y luegosudo
para hacer lo que tenga que hacer el root en esa máquina.
Respuesta
Si está ejecutando este comando scp en la máquina remota, está buscando file.ext
como un archivo «local», es decir, en la máquina remota.
Para copiar un archivo de la máquina remota a la local, use scp -P 2222 username@domain:dir/file.ext localdir
(asumiendo que file.ext
está en ~/dir
en la computadora remota, como en su ejemplo) . Si ejecuta scp
en la máquina remota, invierta «local» y «remoto».
Comentarios
- El OP quiere copiar de local a remoto, vea el título del OP ‘.
- Vaya, supongo que ‘ tiene razón. Pero él ‘ aparentemente lo está haciendo al revés …
Responder
Solo una pequeña contribución, tal vez pueda ayudar a principiantes como yo: la ruta al directorio remoto debe escribirse así: username@domain:~/remote_directory
Lo que quiero resaltar aquí es que siempre debemos agregar que :~/
Respuesta
Solución para copiar archivos del cliente Linux al servidor Linux
-
Verifique si
sshd
se está ejecutando en su servidor usando:ps aux | grep sshd
-
De lo contrario, instale
OpenSSH
consudo apt-get install openssh-server openssh-client
https://www.tecmint.com/install-openssh-server-in-linux/ -
Reinicie su servidor y verifique que
sshd
se esté ejecutando usandops aux | grep sshd
-
Si lo necesita, puede configurar su archivo
/etc/ssh/sshd_config
, pero no es necesario para configuraciones simples -
verifique que th Los puertos se abren usando
netcat
:nc -v -z 127.0.0.1 22
-
Para copiar archivos desde un
Linux
cliente aLinux
cliente use scp de la siguiente manerascp ~/filename.md [email protected]:~/folder/filename.md
-
Para verificar que el archivo se haya copiado, use
ssh [email protected]
y proporcione su contraseña.
Solución para copiar archivos del cliente Linux a Windows
-
Hay varios clientes para ejecutar SSH servidores en Windows, como:
-
Instale uno de los servidores anteriores y asegúrese de que el puerto 22 esté abierto usando
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
-
Comparaciones de estos servidores:
Servidor SSH de Bitvise
-
Proporciona casi un mensaje
cmd
nativo,powershell
, autocompletado -
Proporciona capacidades adicionales para la personalización, si necesita un uso avanzado
-
La personalización del usuario para necesidades simples es 0. Comencé a usarla en 2 minutos, después de haber pasado mucho tiempo tratando de hacer funcionar
MobaSSH
yOpenSSH
. -
Para copiar archivos usando scp use:
scp ~/filename.md [email protected]:/C/Users/username/filename.md
-
Gratis para uso personal, $ 99 para uso profesional. Debido a tantas funciones y una gran integración, el precio vale la pena.
MobaSSH:
-
proporciona una shell en Windows donde comandos simples de Linux como
ls
,cp
,find
, etc., funciona, similar aMINGW64
-
puede acceder a
cmd
ypowershell
directamente escribiendocmd
opowershell
-
La compatibilidad con Unicode es deficiente. La codificación no es correcta. Por ejemplo, si intenta iniciar el intérprete
Python
, se bloqueará. Deberá cambiar la codificación manualmente usando ( https://stackoverflow.com/a/12834315/4752883 ):chcp 65001
set PYTHONIOENCONDING=utf-8
y luego inicie el indicador de Python -
Lo bueno de MobaSSH es que tiene una interfaz de usuario muy simple y
scp
yssh
y bien integrado. Por lo tanto, funcionará para casos de uso simples -
Para copiar archivos desde un cliente Linux a un servidor Windows que ejecute
MobaSSH
: usescp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md
Esto se debe a queMobaSSH
se basa en Cygwin y sus unidades se asignan de la misma maneracygwin
– s están mapeadas.
Use VM de Microsoft con OpenSSHv6.7 instalado desde https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ , OpenSSHv6.7 ya está instalado.
-
Tiene muchos errores y necesitará personalizarlo en gran medida.
-
La finalización del comando no funciona
-
Dejará espacios en blanco cuando mueva el cursor en la terminal
-
Python no funciona
-
Es posible que las versiones posteriores de OpenSSH lo hayan mejorado. Además, MS parece hacer que OpenSSH esté disponible a través de » Funciones opcionales » https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/
-
Responder
Si está en OSX …
Cuando intenté ejecutarlo con username @ local: / file_directory …
Recibí el siguiente error:
ssh: local: node name or service name not known
Solución
En mi Mac tuve que hacer lo siguiente para configurar ssh
local:
Preferencias del sistema -> Internet & Redes -> Compartir -> HABILITAR Inicio de sesión remoto
Esto proporcionó el nombre de usuario @ dirección IP.
Respuesta
Tuve el mismo problema hoy en MAC.
Escribe el siguiente comando:
scp /local-file-path/ /-remote-location-path/
localuser@machineA: ssh -p 2222 username@domain
(para indicar que está ejecutando el comando ssh como localuser en machineA)scp
, el El lado remoto siempre debe contener los dos puntos (por ejemplo,remotehost:/tmp
), de lo contrario, solo hará una copia normal (scp /tmp/foo.txt example.com
copiará/tmp/foo.txt
en un archivo localexample.com
)-r
, ya que no es necesario para copiar archivos individuales (‘ se usa para copiar directorios de forma recursiva )