Dado el escenario:
- Máquina remota : servidor SSH; el usuario no tiene privilegios de administrador;
- Máquina local : cliente SSH; El usuario tiene privilegios de administrador.
Si el usuario , que inicia sesión en remoto desde local , desea interactuar con remoto utilizando un shell no instalado en remoto , ¿cómo puede el usuario lograr esto solo?
Ejemplo: el usuario usa fish en local y desea también usarlo en remoto , pero remoto solo tiene instalados bash y zsh .
shell
ssh
not-root-user
sampablokuper
fuente
fuente
Respuestas:
Instale su caparazón favorito en la máquina remota. No necesita ningún privilegio de administrador para hacerlo, puede instalar programas en su directorio personal, es menos conveniente. Consulte Instalación en debian 5 de 32 bits sin ser root , ¿Cómo instalar un programa localmente sin privilegios de sudo? , Seguimiento de programas y otras preguntas .
Si desea iniciar sesión automáticamente en un shell que instaló usted mismo en lugar del predeterminado, consulte Cómo crear un shell predeterminado de zsh sin acceso de root
Si todo lo que quiere hacer es manipular archivos remotos, puede usar SSHFS para montar el árbol de directorios remotos en su máquina local.
Si no tiene espacio en su directorio de inicio o es una cuenta compartida, puede hacerlo configurando un túnel SSH inverso y montar su árbol de directorio local en la máquina remota con SSHFS , suponiendo que las dos máquinas ejecuten la misma arquitectura ( misma variante de Unix en el mismo tipo de procesador). Si las dos máquinas tienen arquitecturas incompatibles, incluso puede instalar los programas para la arquitectura remota en su directorio de inicio local. Esto puede no ser muy conveniente ya que tendrá que configurar rutas correctamente para que los programas encuentren sus bibliotecas, archivos de configuración y otros archivos de datos.
Eshell de Emacs es compatible con Tramp : si cambia a un directorio remoto en Eshell, ejecutará comandos en la máquina remota.
fuente
Respuesta simple: No, no puede usar en una caja remota un programa que no esté instalado en la caja remota.
Solución alternativa: no necesita privilegios de administrador para instalar un shell en el sistema remoto. Puede instalarlo en su directorio de inicio, pero probablemente tenga que compilarlo desde las fuentes. Normalmente usando algo como
configure --prefix=${HOME}/local
Última nota: no puede cambiar su shell predeterminado a uno no "oficial" (ver
/etc/shells
) pero puede poner algo comoexec fish
en su.bashrc
fuente
El usuario puede usar sshfs para montar su $ HOME remoto en su máquina local. En tal escenario, el usuario no usaría su caparazón de elección en la máquina remota directamente, pero aún así, mejor que nada.
fuente
El enfoque básico es copiar el ejecutable de shell en el host remoto usando y
scp
luego ejecutarlo usandossh
, por ejemploSe
-t
necesita para quessh
asigne un tty, lo que no haría de forma predeterminada al ejecutar un comando remoto.Esto supone que su host remoto está ejecutando el mismo sistema operativo. De lo contrario, querrás descubrir el sistema operativo remoto y compilar un binario (posiblemente estático) que puedas copiar.
fuente
La respuesta obvia, "instalar el comando en la máquina remota", es la solución más limpia, por lo que no debemos ignorarla:
Si es posible instalar el comando como root, por ejemplo con
sudo apt-get install fish
,el comando se puede ejecutar así:
ssh remote -t fish
La pregunta es qué hacer cuando no podemos instalar un comando en la computadora remota.
O más específicamente, se trata del caso de que no podamos instalar un comando como root .
¡Eso no significa que no podamos instalar nada!
Lo que aún es posible es instalar el comando dentro del directorio de inicio construyéndolo desde la fuente .
Esto tiene la ventaja de que se encarga de todos los archivos de soporte asociados que pueden venir con un comando y de cómo los encuentra el programa. En el
fish
ejemplo de shell, estas son las funciones de finalización, etc., todas no están disponibles si solo copiamos elfish
binario.La creación de un comando desde la fuente necesita herramientas de desarrollo y archivos de desarrollo de las bibliotecas utilizadas, lo que puede ser demasiado complicado.
Pero muchos programas vienen con todo lo que necesitan agrupados en las fuentes, por lo que puede ser fácil. Difícil de decir antes, pero uno puede intentarlo.
Para instalar un comando en el directorio de inicio,
configure
se proporciona la ruta para instalar , que debe verificarse en las instrucciones de compilación. P.ej:Tenga en cuenta que no es
sudo make install
tan habitual, ya que es el objetivo de instalarlo localmente para no necesitar sudo aquí.Para obtener información general sobre la instalación de programas desde la fuente, consulte askubuntu.SE: ¿Cómo instalo un archivo .tar.gz (o .tar.bz2)?
fuente
No creo que pueda ejecutar un shell que está en una máquina en otra. La única forma de ejecutarlo en la máquina remota es instalarlo.
fuente