SSH!
SSH es el comando de Dios: creo que es el comando global más valioso para aprender. Las opciones pueden ser bastante desalentadoras, pero parece que estoy aprendiendo constantemente a usar nuevas opciones de línea de comandos para SSH que nunca pensé que serían necesarias. Puede que los haya usado todos en este punto.
Cuanto más lo usas, más aprendes al respecto. Puedes usarlo para hacer algunas cosas INCREÍBLES.
Nota: TODAS estas cosas se pueden hacer de forma remota sin configuración en su servidor, excepto para tener el servidor ssh ejecutándose.
Montar un sistema de archivos a través de internet
buscar en la red SSHFS
Reenviar comandos .
¡El protocolo SVN + SSH es Subversion de un cliente remoto a un servidor sin ejecutar ningún DEAMON! El comando SVN inicia el servidor a través del shell ssh y pasa la información de un lado a otro a través de la tubería existente. El programa rsync hace lo mismo, se ejecuta contra un servidor sin demonio rsync al iniciar uno a través de SSH. Es fácil escribir sus propios archivos bash para hacer trucos similares.
Cadena para atravesar firewalls
Lo uso todo el tiempo para saltar a través de mi servidor Linux en casa a mi Mac.
Puertos de reenvío:
parece moderadamente útil hasta que se da cuenta de que puede rebotar a través del firewall de su hogar y configurar su enrutador en el hogar desde el trabajo como si lo estuviera haciendo desde su red doméstica).
Reenviar X solicitudes:
Este es otro asombroso. Con o sin un servidor X ejecutándose en su sistema remoto, puede ejecutar un programa x-windows y la ventana aparecerá en su pantalla local. Solo usa el interruptor -X, ¡eso es todo!
Como no tiene que tener un servidor X ejecutándose en su servidor remoto, el impacto de la CPU en su servidor es mínimo, puede tener un servidor TINY Linux que sirva enormes aplicaciones para su poderosa PC de juego con Windows y cygwin / X.
Por supuesto, VI y EMACS funcionan sobre SSH, pero cuando estoy corriendo en casa, a veces quiero más. ¡Uso ssh -X para iniciar una copia de Eclipse! Si su servidor es más potente que su computadora portátil, tiene la GUI justo allí en su computadora portátil, pero las compilaciones se realizan en su servidor, así que no se preocupe por la carga del sistema.
Ejecutar en archivos por lotes
(lo que significa ejecutar un archivo por lotes local que "hace cosas" en otros sistemas):
Dos cosas se combinan para hacer que este sea genial. Una es que puede eliminar las solicitudes de contraseña mediante el uso de claves de cifrado (más seguras). El segundo es que puede especificar un comando en la CLI de SSH. Lo he usado de algunas maneras interesantes: como cuando falla una compilación en el servidor remoto, lo tendría en SSH en mi computadora y reproduzco un archivo de sonido).
Recuerde que puede redirigir la salida desde el comando remoto y usarla dentro de su archivo por lotes local, por lo que también podría estar localmente siguiendo una compilación que se ejecuta en su servidor.
Construido en Mac
Tanto el servidor como el cliente están integrados en mac y linux. En el caso de Mac y Ubuntu, habilitar un servidor es tan simple como encontrar la casilla de verificación correcta.
En una PC, instale cygwin o cygwin / X (cygwin / X le permitirá reenviar su salida de x-window desde su máquina Linux a su PC con Windows; instala un servidor X)
Consejos importantes / archivo de configuración
Nunca use el puerto 22 en su firewall. Obtendrá muchos intentos de pirateo, simplemente no vale la pena. Simplemente haga que su firewall reenvíe un puerto diferente a su servidor.
Existen amplias opciones de configuración que le permiten simplificar significativamente sus comandos ssh. Aquí hay un ejemplo mío en el trabajo:
Host home
hostname billshome.hopto.org
Port=12345
user=bill
LocalForward=localhost:1025 mac:22
Cuando escribo "ssh home" (nada más), actúa como si hubiera escrito:
ssh -p 12345 bill@billshome.hopto.org
y luego reenvía mi puerto local 1025 a mi sistema "mac" en casa. La razón de esto es que tengo otra entrada en mi archivo:
Host mac
hostname localhost
port=1025
así que una vez que he hecho un "ssh home" y todavía tengo la ventana abierta, puedo escribir "ssh mac" y la computadora en el trabajo aquí intentará conectarse a su propio puerto 1025 que ha sido enviado a "mac: 22 "por el otro comando, por lo que se conectará a mi Mac en casa a través del firewall.
Editar - guión genial!
Desenterré un guión antiguo que me encanta, tuve que volver y publicarlo para cualquiera que pudiera estar interesado. El guión se llama "authMe"
#!/bin/bash
if [ ! -f ~/.ssh/id_dsa.pub ]
then
echo 'id_dsa.pub does not exist, creating'
ssh-keygen -tdsa
fi
ssh $1 'cat >>.ssh/authorized_keys' <~/.ssh/id_dsa.pub
Si tiene este script en su directorio de inicio y hay un host al que puede conectarse (a través de ssh), puede escribir "./authMe hostName".
Si es necesario, creará un par de claves público / privado para usted, luego se enviará a la otra máquina y copiará su clave pública (el comando ssh le pedirá una contraseña ...)
Después de esto, el comando SSH ya no debe solicitar su contraseña cuando se conecta a ese sistema remoto, utilizará el par de claves público / privado.
Si su computadora remota no siempre es segura, debería considerar establecer una "frase de contraseña" cuando se le solicite.
También es posible que desee configurar el servidor ssh en el otro extremo para no permitir contraseñas de texto (solo claves) para mayor seguridad.