Cómo SSH en una línea

¿Cómo me conectaría a otra computadora a través de SSH en una línea? Si yo fuera a hacer ssh host@IP , me requeriría introducir la contraseña en la segunda línea. Yo estaba pensando que podría hacer algo como esto: ssh host@IP | echo password ssh host@IP | echo password , pero que pone la contraseña antes de pedir la contraseña.

  • ¿Cómo get un emacs "moderno" que se ejecuta en un terminal en os x lion?
  • ssh -A no habilita correctamente el reenvío de la connection del agente de authentication
  • ¿Cuál es su forma preferida de iniciar un script (shell) desde la GUI?
  • ¿Cómo puedo iniciar una llamada telefónica de Google Voice desde la command-line?
  • La terminación de tabulación para los hosts definidos en ~ / .ssh / config ya no funciona en Yosemite
  • Cómo definir persistentemente alias en Terminal
  • Desactivar el índice Spotlight en 10.8 en volúmenes específicos
  • ¿Cómo puedo habilitar SSH sin usar gui o script de apple en snow leopard?
  • Salida de Terminal.app incorrecta para líneas largas con tabs
  • Rompí mi PATH editando mi ~ / .bash_profile y Bash no reconocería la mayoría de los commands
  • En terminal, modifique el text que viene antes de $
  • ¿Cómo puedo get diferentes colors para directorys, etc. en iTerm2?
  • 4 Solutions collect form web for “Cómo SSH en una línea”

    Usted debe utilizar las keys SSH para autenticarse con en lugar de poner su contraseña en la command-line, ya que es muy inseguro.

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

     ssh user@host 

    y sin teclear otra cosa, usted se conectará automáticamente.


    Copiar key pública SSH a Mac / FreeBSD / Linux desde macOS

    Esto supone que tiene acceso al server remoto mediante una 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 ejemplo siguiente, estamos utilizando RSA. Para empezar, vamos a copyr la key (tenga en count que el directory "home" difiere entre macOS, Linux, BSD, etc.):

    Uso de SCP:

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

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

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

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

    Ahora la key se ha copydo del mac al server alejado . 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 utilice el siguiente command:

     cat id_rsa.pub >> authorized_keys 

    Si el file no existe, escriba los siguientes commands:

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

    Generar key SSH pública / privada en macOS

    Abra el Terminal, acceda a Aplicaciones -> Utilidades -> Terminal

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

     ssh-keygen -t rsa 

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

    Introduzca el file en el que desea 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 pida 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, si introduce una frase de contraseña, deberá ingresarla cada vez que se conecte. La utilidad ssh-agent mantendrá la frase de paso en la memory, aliviando la necesidad de introducirla manualmente cada vez que se conecte mientras esté en la misma session. Para más detalles ver 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 será visible para otros processs o en el historial de shell.

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

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

    El uso de expect es simplemente incorrecto para iniciar session en una connection ssh para cualquier otra cosa que no sea en una suite de testing.

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

    1. Generar un par de keys público / privado usando ssh-keygen . Utilice ECDSA o RSA como el -t (o tipo) y para RSA use 2048 o 4096 como -b (o longitud de BITS). Esto debería ser suficiente en el momento de escribir. SIEMPRE use una CONTRASEÑA!
    2. Utilice el file ssh-copy-id o la metodología mencionada anteriormente para crear en el equipo al que está conectándose (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 usas para iniciar session en el 'server' (o cliente), abre el file ~/.ssh/config . Si no existe, puede crearlo.
    4. En este file, agregue 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 sólo ssh <name> para configurar la connection, pero todavía necesitará la contraseña para su key. Para solucionar esto, utilice el agente desarrollado por ssh-agent para este propósito. Para agregar su key al agente, simplemente use ssh-add <path to keyfile> . Se le pedirá la contraseña y almacenará la key de forma segura para esta session. Si se produce el error "no se puede encontrar el agente ssh" (o similar), eso significa que probablemente el agente no se ha iniciado. Puede iniciarlo para esta session utilizando ssh-agent bash . Esto iniciará un nuevo shell con el agente activo en él.

    Al usar estos pasos, no sólo hace más difícil que alguien se suplante a usted mediante el secuestro de sus cnetworkingenciales, sino también mantener 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 todas estas personas que le dicen que utilice las keys RSA ( que es una idea más segura y confiable ), es muy posible.

    Utilice un progtwig llamado expect para esto. Esperar verá stdout (y creo stderr si está configurado correctamente) para usted, esperando ciertos posts y respondiendo a ellos con salida. Esperar a sí mismo es en realidad un lenguaje de scripting, y cuando estaba haciendo esto mismo, tuve un time muy difícil conseguir mi propio script para funcionar correctamente debido a la synchronization. Sin embargo, espere también incluye una utilidad práctica llamada autoexpect .

    Con autoexpect, te verá y generará un script de espera para ti. Simplemente ejecute autoexpect y el command que desea:

     autoexpect ssh host@ip 

    y hacer lo que haría normalmente. Cuando salga del progtwig (escribiendo exit en el shell ssh'd), generará el script. En caso de que no desee que el guión completo que está escribiendo esté en un script de espera, puede editar el script de autoexpect (llamado script.exp ) para salir antes de escribir el command exit en el shell. La línea que desea mover para cambiar el final del guión es:

     expect eof 

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

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