stdouten un servidor CentOS debe conectarse a stdinotro servidor CentOS. es posible?
Actualizar
ScottPack, MikeyB y jofel tienen respuestas válidas. Le di la respuesta a Scott porque, aunque mi pregunta no especificaba la seguridad como un requisito, siempre es bueno estar seguro. Sin embargo, las sugerencias de los otros dos compañeros también funcionarán.

Respuestas:
Este es un sí descarado.
Cuando uno usa
sshpara ejecutar un comando en un servidor remoto, realiza algún tipo de redireccionamiento interno de entrada / salida sofisticado. De hecho, creo que esta es una de las características más sutiles de OpenSSH. En concreto, si se utilizasshpara ejecutar un comando arbitrario en un sistema remoto, a continuación, ssh mapaSTDINySTDOUTa la del comando que se está ejecutando.A modo de ejemplo, supongamos que desea crear un tarball de respaldo, pero no quiere o no puede almacenarlo localmente. Echemos un vistazo a esta sintaxis:
Estamos creando un tarball y escribiéndolo en
STDOUTcosas normales. Como estamos usando ssh para ejecutar un comando remoto, STDIN se asigna alSTDINdecat. Que luego redirigimos a un archivo.fuente
netcaten ambos extremos se convierte en un gran canal de comunicación simple y fácil.tar cf - /path/to/dir | nc 1.2.3.4 5000en un servidor,nc -l -p 5000 > backupfile.taren el otro.Una forma conveniente de canalizar datos entre hosts cuando no necesita preocuparse por la seguridad a través del cable es usar
netcatambos extremos de la conexión.Esto también le permite configurarlos de forma asíncrona:
En el "receptor" (realmente, tendrá comunicación bidireccional, pero es más fácil pensarlo así), ejecute:
Y en el "remitente", ejecute:
fuente
Una herramienta muy poderosa para crear conexiones unidireccionales y bidireccionales es
socat. Para un breve vistazo a las posibilidades, vea los ejemplos en su página de manual .Reemplaza
netcaty herramientas similares por completo y tiene soporte para conexiones cifradas SSL. Para los principiantes, puede que no sea lo suficientemente simple, pero al menos es bueno saber que existe.fuente
TL; DR
Las cosas solo se vuelven un poco más complicadas cuando tienes un servidor bastión que debe usarse.
Puede pasar
sshcomo el comando quesshdesee:cat local_script.sh | ssh -A usera@bastion ssh -A userb@privateserver "cat > remote_copy_of_local_script.sh; bash remote_copy_of_local_script.sh"Cuidado con los pseudo terminales
Tenga en cuenta que el punto de importancia clave aquí es que
ssh, como la mayoría de las herramientas, solo tratastdoutystdincorrige por defecto.Sin embargo, cuando comience a ver la opción Me gusta
Disable pseudo-terminal allocation.yForce pseudo-terminal allocation.es posible que deba hacer un poco de prueba y error. Pero, como regla general , no desea alterar elttycomportamiento a menos que esté tratando de arreglar basura ilegible / binaria en un emulador de terminal (lo que un humano escribe).Por ejemplo, tiendo a usarlo
-Atpara que el agente ssh de mi estación de trabajo se reenvíe, y para que ejecutar tmux de forma remota no interrumpa el binario (asíssh -At bastion.internal tmux -L bruno attach). Y, para Docker también (como asísudo docker exec -it jenkins bash).Sin embargo, esas dos
-tbanderas causan algunos daños en los datos difíciles de rastrear cuando intento hacer algo como esto:fuente
Intente poner su clave pública ssh en otro host con solo un comando
fuente
Creo que esto es lo más fácil, después de configurar el protocolo de enlace sin contraseña entre servidores para el usuario que está ejecutando el comando como:
Sin comprimir
Compresión sobre la marcha
fuente
sshya está configurado para la compresión.Compressionpodría establecerse en cualquiera de los archivos de configuración, una comprobación rápida es para ver sissh -v localhost exit 2>&1 | fgrep -i compressda algún resultado (AFAIK no hay opción para volcar la configuración ya que ssh la ha leído).tartiene una-C pathbandera que funciona para los comandoscyx. No tiene que poner uncdcomando separado allí. (Pero es bueno tener en cuenta que puede ejecutar más de un comando.)-Ces una extensión de GNU (aunque ahora también es compatible con bsdtar y schily tar)