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.com
se copia/tmp/foo.txt
en un archivo localexample.com
)-r
marca, ya que esto no es necesario para copiar archivos individuales (se usa para copiar directorios de forma recursiva )Respuestas:
Debe ejecutar el
scp
comando desde la máquina local, no desde el control remoto. No necesitas nadassh
en 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é
ssh
configurada. 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.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
(suponiendo quefile.ext
esté en~/dir
la computadora remota, como en su ejemplo). Si ejecutascp
en la máquina remota, invierta "local" y "remoto".fuente
Usa el
scp
comandoSi desea transferir una carpeta, solo
zip
primero, podemosunzip
hacerlo más adelante.Desde su computadora, ejecute esto:
Aquí
root
está su cuenta y10.145.198.100
es la dirección IP del servidor remoto. Vamos a copiarthe_file
a la~/
carpeta en el control remoto.Descomprimir archivo:
fuente
root
incluso tendría acceso SSH en la máquina remota? Eso es bastante inseguro. Es mejor usar un uso ordinario y luegosudo
hacer 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_directory
Lo que quiero resaltar aquí es que siempre debemos agregar eso
:~/
fuente
Solución para copiar archivos de
Linux client
aLinux Server
Verifique si se
sshd
está ejecutando en su servidor usando:ps aux | grep sshd
Si no, instale
OpenSSH
usandosudo apt-get install openssh-server openssh-client
https://www.tecmint.com/install-openssh-server-in-linux/Reinicie su servidor y verifique que se
sshd
esté ejecutando usandops aux | grep sshd
Si lo necesita, puede configurar su
/etc/ssh/sshd_config
archivo, pero no es necesario para configuraciones simplesverificar que los puertos estén abiertos usando
netcat
nc -v -z 127.0.0.1 22
Para copiar archivos de un
Linux
cliente a unLinux
cliente, use scp de la siguiente manerascp ~/filename.md [email protected]:~/folder/filename.md
Para verificar que el archivo se ha copiado, use
ssh [email protected]
y proporcione su contraseña.Solución para copiar archivos de
Linux client
WindowsHay 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
cmd
solicitud nativa ,powershell
solicitud, 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
MobaSSH
yOpenSSH
trabajar.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 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
,find
etc trabajo, similar aMINGW64
puede acceder
cmd
ypowershell
directamente escribiendocmd
opowershell
El soporte Unicode es pobre. La codificación no es correcta. Por ejemplo, si intenta iniciar el
Python
intérprete, se bloqueará. Deberá cambiar la codificación manualmente usando ( https://stackoverflow.com/a/12834315/4752883 ):chcp 65001
set PYTHONIOENCONDING=utf-8
y luego iniciar el indicador de PythonLo bueno de MobaSSH es que tiene una forma muy sencilla interfaz de usuario, y
scp
yssh
e integrado también. Entonces funcionará para casos de uso simplesPara copiar archivos de un
Linux
cliente a unWindows
servidor en ejecuciónMobaSSH
: usescp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md
Esto se debe a queMobaSSH
se basacygwin
y sus unidades se asignan de la misma maneracygwin
que 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 Features
https://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