Ejecute un comando remoto utilizando el archivo de configuración ssh
32
Me gustaría poder configurar un comando para ejecutar el inicio de sesión ssh en un servidor, sin necesidad de escribirlo. Básicamente estoy buscando el archivo de configuración ssh equivalente a:
También es posible insertar un comando en su archivo de claves autorizado. ( ~/.ssh/authorized_keys) Esto le permite ejecutar un comando personalizado para cada tecla del archivo. Lo uso para reenviar conexiones de shell a través de mi firewall. El resultado es que puedo ssh a un host y se conecta automáticamente la sesión a un host dentro de la red. La authorized_keysentrada se ve así:
command="ssh -Tq <hostname> \"$SSH_ORIGINAL_COMMAND\"",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA... the rest of the key ...
Más específicamente, la redirección es para mi instancia de gitolita. Esto permite un acceso externo simple sin exponer directamente al huésped de gitolita a ningún acceso externo. Consulte la página del manual para obtener más información. ( http://linux.die.net/man/8/sshd )
Esto es increíble, no sabía que podías hacer esto. +1
Brian Wigginton
3
Si coloca el comando en su archivo autorizado_claves, romperá cosas como rsync y scp: obtendrá algo como esto: falló el terminal abierto: no es un terminal. Además, tenga en cuenta que si el comando falla, no podrá iniciar sesión. He descubierto esto de la manera difícil.
Si está ejecutando OpenSSH, parece que
~/.ssh/rc
se ejecuta al iniciar sesión .fuente
/.ssh/rc
ubicado en la máquina del cliente o servidor? Parece de los documentos del servidor, ¿verdad?rc
archivo parece no funcionar cosas comoscreen
, recibiendo un error "Debe ser conectado a un terminal"Podrías configurar un alias bash.
En su archivo .bashrc, ponga:
Entonces ni siquiera tendría que escribir el nombre de host.
O, si desea hacer esto con varios hosts (y varios alias no funcionarían), use un pequeño script:
fuente
Puede resolver esto en su
.ssh/config file
, para el host donde desea ejecutar un comando, agreguedonde
<some command>
esta tu comando Esto también funciona con pantalla o tmux.fuente