Eché un vistazo a otras preguntas aquí y a varios tutoriales de "uso de scp" en Internet, pero no puedo resolver lo que está mal.
Estoy usando Linux Mint y estoy tratando de descubrir cómo funciona scp .
Tengo un archivo file.ext (en mi computadora) en el directorio / home / name / dir /
Me conecto a una máquina remota usando ssh , como:
ssh -p 2222 username@domain
me pide la contraseña y aparece el shell:
username@domain ~ $
ahora, si ejecuto el comando (antes de ejecutar ssh estaba en el directorio local / home / name / dir ):
scp -r -P 2222 file.ext username@domain
la salida es:
cp: cannot stat ‘file.ext’: No such file or directory
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ía 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 información.
Resumen de mis problemas:
- cp: no existe tal archivo o directorio
- shell "atascado" en ~ /
¿Alguna sugerencia?

localuser@machineA: ssh -p 2222 username@domain(para indicar que está ejecutando el comando ssh como localizador en la máquina A)scp, la distancia lateral siempre tiene que contener el colon (por ejemploremotehost:/tmp), de lo que se acaba de hacer una copia simple (scp /tmp/foo.txt example.comse copia/tmp/foo.txten un archivo localexample.com)-rmarca, ya que esto no es necesario para copiar archivos individuales (se usa para copiar directorios de forma recursiva )Respuestas:
Debe ejecutar el
scpcomando desde la máquina local, no desde el control remoto. No necesitas nadasshen absoluto:Tampoco necesitas
-r:Si ya ha iniciado sesión en la máquina remota y desea copiar desde su local, debe asegurarse de que su máquina local sea accesible a través de Internet y esté
sshconfigurada. No creo que esto sea lo que buscas, pero si es así, simplemente ejecuta esto desde el control remoto:fuente
Proporciono dos métodos de carga / descarga de archivos entre la máquina remota y local (uso Mac air):
En este caso, quiero subir / bajar "11.jpeg" entre local y remoto:
1)
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 de si debe configurar" 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, luego escriba el comando a continuación:
nombre de usuario scp @ dominio: /home/xxx/xxx/11.jpeg nombre de usuario @ xxxxxx: / Users / username / Desktop /
Este comando anterior es para descargar un archivo de remoto a local cuando inicia sesión en ssh. Simplemente cambie las dos rutas cuando desee cargar el archivo.
fuente
Si está ejecutando este comando scp en la máquina remota, se busca
file.extcomo 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(suponiendo quefile.extesté en~/dirla computadora remota, como en su ejemplo). Si ejecutascpen la máquina remota, invierta "local" y "remoto".fuente
Usa el
scpcomandoSi desea transferir una carpeta, solo
zipprimero, podemosunziphacerlo más adelante.Desde su computadora, ejecute esto:
Aquí
rootestá su cuenta y10.145.198.100es la dirección IP del servidor remoto. Vamos a copiarthe_filea la~/carpeta en el control remoto.Descomprimir archivo:
fuente
rootincluso tendría acceso SSH en la máquina remota? Eso es bastante inseguro. Es mejor usar un uso ordinario y luegosudohacer lo que la raíz tenga que hacer en esa máquina.Solo una pequeña contribución, tal vez pueda ayudar a principiantes como yo: la ruta al directorio remoto debería escribirse así:
username@domain:~/remote_directoryLo que quiero resaltar aquí es que siempre debemos agregar eso
:~/fuente
Solución para copiar archivos de
Linux clientaLinux ServerVerifique si se
sshdestá ejecutando en su servidor usando:ps aux | grep sshdSi no, instale
OpenSSHusandosudo apt-get install openssh-server openssh-clienthttps://www.tecmint.com/install-openssh-server-in-linux/Reinicie su servidor y verifique que se
sshdesté ejecutando usandops aux | grep sshdSi lo necesita, puede configurar su
/etc/ssh/sshd_configarchivo, pero no es necesario para configuraciones simplesverificar que los puertos estén abiertos usando
netcatnc -v -z 127.0.0.1 22Para copiar archivos de un
Linuxcliente a unLinuxcliente, use scp de la siguiente manerascp ~/filename.md [email protected]:~/folder/filename.mdPara verificar que el archivo se ha copiado, use
ssh [email protected]y proporcione su contraseña.Solución para copiar archivos de
Linux clientWindowsHay varios clientes para ejecutar servidores SSH en Windows, como OpenSSH desde MS
MobaSSH
Servidor Bitvise SSH
Instale uno de los servidores anteriores y asegúrese de que el puerto 22 esté abierto usando
netsh advfirewall firewall agregar nombre de regla = "SSH Port 22" dir = en acción = permitir protocolo = UDP localport = 22
netsh advfirewall firewall agregar nombre de regla = "SSH Port 22" dir = out action = permitir protocolo = UDP localport = 22
netsh advfirewall firewall agregar nombre de regla = "SSH Port 22" dir = en acción = permitir protocolo = TCP localport = 22
netsh advfirewall firewall agregar nombre de regla = "SSH Port 22" dir = out action = permitir protocolo = TCP localport = 22
netsh advfirewall desactiva el estado de todos los perfiles
Comparaciones de estos servidores:
Servidor Bitvise SSH
Proporciona casi la
cmdsolicitud nativa ,powershellsolicitud, autocompletadoProporciona capacidades adicionales para la personalización, si necesita un uso avanzado
La personalización del usuario para necesidades simples es 0. Comencé a trabajar en 2 minutos, después de haber pasado mucho tiempo tratando de llegar
MobaSSHyOpenSSHtrabajar.Para copiar archivos usando scp use:
scp ~/filename.md [email protected]:/C/Users/username/filename.mdGratis para uso personal, $ 99 para uso profesional. Debido a tantas características y gran integración, el precio bien vale la pena.
MobaSSH:
proporciona un shell Linux en ventanas donde los comandos de Linux simple tal como
ls,cp,findetc trabajo, similar aMINGW64puede acceder
cmdypowershelldirectamente escribiendocmdopowershellEl soporte Unicode es pobre. La codificación no es correcta. Por ejemplo, si intenta iniciar el
Pythonintérprete, se bloqueará. Deberá cambiar la codificación manualmente usando ( https://stackoverflow.com/a/12834315/4752883 ):chcp 65001set PYTHONIOENCONDING=utf-8y luego iniciar el indicador de PythonLo bueno de MobaSSH es que tiene una forma muy sencilla interfaz de usuario, y
scpysshe integrado también. Entonces funcionará para casos de uso simplesPara copiar archivos de un
Linuxcliente a unWindowsservidor en ejecuciónMobaSSH: usescp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.mdEsto se debe a queMobaSSHse basacygwiny sus unidades se asignan de la misma maneracygwinque se asignan las unidades -s.Use máquinas virtuales de Microsoft con OpenSSHv6.7 instalado desde https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ , OpenSSHv6.7 ya está instalado.
Es muy defectuoso, y tendrá que 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
Las versiones posteriores de OpenSSH pueden haber mejorado en él. Además, MS parece hacer que OpenSSH esté disponible a través de
Optional Featureshttps://developer.microsoft.com/en-us/microsoft-edge/tools/vms/fuente
Si te encuentras en OSX ...
Cuando intenté ejecutarlo con username @ local: / file_directory ...
Tuve el siguiente error:
Solución
En mi Mac tuve que hacer lo siguiente para configurar local
ssh:Esto luego proporcionó el nombre de usuario @ dirección IP.
fuente
Tuve este mismo problema hoy en MAC.
Escriba el siguiente comando:
fuente