Cómo SSH en una línea

¿Cómo me conectaría con otra computadora a través de SSH en una línea? Si tuviera que hacer ssh host@IP , me requeriría ingresar la contraseña en la segunda línea. Estaba pensando que podría hacer algo como esto: ssh host@IP | echo password ssh host@IP | echo password , pero eso ingresa la contraseña antes de pedir la contraseña.

  • Listar todos los alias definidos en la Terminal
  • Haga que el command de terminal use ambos núcleos de CPU
  • La carga promedio aumenta después de actualizar a Mavericks
  • El terminal no solicitará una frase de contraseña y no se almacenará en el llavero
  • "Texto fantasma" en la terminal, Yosemite + TotalTerminal (anteriormente Visor)
  • Copiar al portapapeles de Tmux en El Capitan
  • ¿Por qué OS X puede enviar correos electrónicos sin configurar primero SMTP?
  • ¿Puedes usar Terminal para colgar tu computadora?
  • Automatizando ffmpeg usando el Servicio Automator
  • Verificar el estado de la administración remota a través del terminal
  • ¿Cómo crear un alias bash en OS X?
  • Perdido en FFMPEG (descarga e installation)
  • 4 Solutions collect form web for “Cómo SSH en una línea”

    Debería utilizar keys SSH para autenticarse en lugar de poner su contraseña en la command-line, ya que es extremadamente inseguro.

    La forma en que esto funciona es que una vez que tienes configuradas las keys SSH, todo lo que tienes que hacer es emitir el command:

     ssh user@host 

    y sin escribir otra cosa, iniciarás session automáticamente.


    Copie la key pública SSH en Mac / FreeBSD / Linux desde macOS

    Esto supone que tiene acceso al server remoto a través de la authentication basada en contraseña (escribiendo una contraseña), y que ya ha generado su par de keys privado / público (si no, consulte a continuación). En el siguiente ejemplo, estamos usando RSA. Para empezar, copiemos la key (tenga en count que el directory "home" difiere entre macOS, Linux, BSD, etc.):

    Usando SCP:

     scp ~/.ssh/id_rsa.pub username@hostname:/Users/username/.ssh/ 

    O simplemente enviando el file a authorized_keys (prefiero este método):

     cat id_rsa.pub | ssh username@hostname ' cat >>.ssh/authorized_keys' 

    (Su nombre de key puede diferir) Si el directory .ssh no existe en el server remoto, necesitará iniciar session y crearlo.

    Ahora la key ha sido copyda del Mac al server remoto . Establezca los permissions correctos para la key pública SSH en el server remoto:

     chmod 600  ~/.ssh/id_rsa.pub 

    A continuación, agregue la key al file SSH authorized_keys, si el file no existe, créelo.

    Si el file authorized_keys ya existe en ~/.ssh use el siguiente command:

     cat id_rsa.pub >> authorized_keys 

    Si el file no existe, ingrese los siguientes commands:

     cat id_rsa.pub > authorized_keys chmod 600 authorized_keys chown user:group authorized_keys 

    Generar key pública / privada SSH en macOS

    Abra la Terminal yendo a Aplicaciones -> Utilidades -> Terminal

    En la terminal, use el siguiente command para iniciar la generación de keys

     ssh-keygen -t rsa 

    A continuación, se le pedirá que proporcione la location en la que desea crear el file de key privada:

    Ingrese el file para save la key ( /Users/username/.ssh/id_rsa ):

    Deje esto vacío para crear la key en la location pnetworkingeterminada, que es /Users/username/.ssh/id_rsa . El file de key pública se creará en la misma location y con el mismo nombre, pero con la extensión .PUB.

    Después de que se le pedirá que elija una frase de contraseña. Esta es la contraseña opcional para usar la key privada.

     Enter passphrase (empty for no passphrase): 

    Su key SSH se genera.

    Ahora, tenga en count que si escribe una frase de contraseña, se le pedirá que la ingrese cada vez que se conecte. La utilidad ssh-agent mantendrá la frase de contraseña en la memory aliviando la necesidad de ingresarla manualmente cada vez que se conecte mientras se encuentra en la misma session. Para más detalles, vea man ssh-agent

    Hay varias posibilidades. Su ejemplo obviamente no funcionará, pero puede lograr algo similar usando la utilidad sshpass :

     sshpass -p password ssh host@IP 

    Tenga en count que esto no se recomienda porque la password estará visible para otros processs o en el historial del shell.

    Una forma mucho mejor de hacer lo mismo es configurar la authentication sin contraseña con las teclas SSH. En breve:

     ssh-keygen -t rsa -f ~/.ssh/id_rsa ssh-copy-id IP 

    Usar expect es simplemente incorrecto iniciar session en una connection ssh para cualquier cosa que no sea un banco de testings.

    Lo que @ ben-a está buscando ya está implementado en ssh. El truco es cómo usarlo. Así que aquí va:

    1. Genera un par de llaves público / privado usando ssh-keygen . Utilice ECDSA o RSA como -t (o tipo) y para RSA use 2048 o 4096 como -b (o BITS de longitud). Esto debería ser suficiente al momento de escribir. ¡SIEMPRE use una CONTRASEÑA!
    2. Utilice ssh-copy-id o la metodología mencionada anteriormente para crear en la máquina en la que está ~/.ssh/authorized_keys session (también conocido como el server) el file ~/.ssh/authorized_keys . Dentro hay una copy de la key pública que acaba de generar.
    3. Ahora, en la máquina que usa para iniciar session en el 'server' (o cliente), abre el file ~/.ssh/config . Si no existe, puedes crearlo.
    4. En este file, agrega lo siguiente para sus necesidades

       host <name you want to use for this connection> Hostname <DNS or IP of the server> user <user name you want to use> identitiesonly yes identityfile <path to the private key> 
    5. Ahora puede usar solo ssh <name> para configurar la connection, pero aún necesitará la contraseña para su key. Para resolver esto, use el ssh-agent desarrollado e incluido para este propósito. Para agregar su key al agente solo use ssh-add <path to keyfile> . Se le pedirá la contraseña y la almacenará de forma segura para esta session. Si arroja el error "no se puede encontrar el agente ssh" (o similar), eso significa que probablemente el agente no se haya iniciado. Puede iniciarlo para esta session usando ssh-agent bash . Esto iniciará un nuevo shell con el agente activo en él.

    Al utilizar estos pasos, no solo hace que sea más difícil para alguien suplantarlo mediante el secuestro de sus cnetworkingenciales, sino que también mantiene la usabilidad en order (es más fácil de usar que las passwords simples).

    He pasado mucho time buscando la respuesta a esto también. A pesar de ser inseguro y de que todas estas personas le digan que use keys RSA ( que ES una idea más segura y confiable ), es bastante posible.

    Use un progtwig llamado " expect para esto". Espere que vea stdout (y creo que stderr si está configurado correctamente) para usted, esperando ciertos posts y respondiéndoles con salida. Esperar a sí mismo es en realidad un lenguaje de scripting, y cuando estaba haciendo lo mismo, me costó mucho conseguir que mi propio script funcionara correctamente debido a la oportunidad. Sin embargo, también se espera una utilidad práctica llamada autoexpect .

    Con autoexpect, lo vigilará y generará un script de espera para usted. Simplemente ejecute autoexpect y el command que desea:

     autoexpect ssh host@ip 

    y haz lo que normalmente harías Cuando salga del progtwig (escribiendo exit en el shell ssh'd), generará el script. En caso de que no desee que toda la secuencia de commands que está escribiendo esté en un script esperado, puede editar la secuencia de commands de autoexpect (llamado script.exp ) para salir antes de escribir el command de exit en el shell. La línea que desea mover para cambiar el final del script es:

     expect eof 

    lo que significa esperar al final del file. ¡Espero que esto ayude!

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).