Dado o cenário:
- Máquina remota : servidor SSH; o usuário não tem privilégios de administrador;
- Máquina local : cliente SSH; O usuário tem privilégios de administrador.
Se o usuário , efetuando login no remoto do local , deseja interagir com o remoto usando um shell não instalado no remoto , como o usuário pode fazer isso sozinho?
Exemplo: o usuário usa o fish no local e deseja também usá-lo no controle remoto , mas o controle remoto só possui o bash e o zsh instalados.
shell
ssh
not-root-user
sampablokuper
fonte
fonte
Respostas:
Instale seu shell favorito na máquina remota. Você não precisa de privilégios de administrador para fazer isso, você pode instalar programas em seu diretório pessoal, é apenas menos conveniente. Veja Instalação no debian 5 de 32 bits sem ser root . Como instalar um programa localmente sem privilégios de sudo? , Mantendo o controle de programas e outras perguntas .
Se você deseja efetuar login automaticamente em um shell que você instalou em vez do padrão, consulte Tornando o shell padrão do zsh sem acesso root
Se tudo o que você deseja fazer é manipular arquivos remotos, você pode usar o SSHFS para montar a árvore de diretórios remotos na sua máquina local.
Se você não tem espaço no diretório inicial ou é uma conta compartilhada, pode se contentar em configurar um túnel SSH reverso e montar sua árvore de diretórios local na máquina remota com SSHFS , supondo que as duas máquinas estejam executando a mesma arquitetura ( mesma variante unix no mesmo tipo de processador). Se as duas máquinas tiverem arquiteturas incompatíveis, você poderá instalar os programas para a arquitetura remota no diretório inicial local. Isso pode não ser muito conveniente, pois você precisará configurar os caminhos corretamente para que os programas encontrem suas bibliotecas, arquivos de configuração e outros arquivos de dados.
O eshell do Emacs é compatível com o Tramp : se você mudar para um diretório remoto no Eshell, estará executando comandos na máquina remota.
fonte
Resposta simples: Não, você não pode usar em uma caixa remota um programa que não está instalado na caixa remota.
Solução alternativa: você não precisa de privilégios de administrador para instalar um shell no sistema remoto. Você pode instalá-lo em seu diretório pessoal, mas provavelmente precisará compilá-lo a partir das fontes. Normalmente, usando algo como
configure --prefix=${HOME}/local
Última nota: você não pode alterar seu shell padrão para um não oficial (veja
/etc/shells
), mas pode colocar algo comoexec fish
em seu.bashrc
fonte
O usuário pode usar sshfs para montar seu $ HOME remoto em sua máquina local. Nesse cenário, o usuário não usaria seu shell de escolha diretamente na máquina remota, mas, ainda assim, melhor que nada.
fonte
A abordagem básica é copiar o executável do shell para o host remoto usando, em
scp
seguida, executá-lo usandossh
, por exemplo,O
-t
é necessário para quessh
aloque um tty, o que não faria por padrão ao executar um comando remoto.Isso pressupõe que seu host remoto esteja executando o mesmo sistema operacional. Caso contrário, você deseja descobrir o sistema operacional remoto e compilar um binário (possivelmente estático) que você pode copiar.
fonte
A resposta óbvia, "instale o comando na máquina remota", é a solução mais limpa, portanto, não devemos ignorá-la:
Se for possível instalar o comando como root, por exemplo
sudo apt-get install fish
, com ,o comando poderá ser executado assim:
ssh remote -t fish
A questão é sobre o que fazer quando não podemos instalar um comando no computador remoto.
Ou, mais especificamente, é sobre o caso em que não podemos instalar um comando como root .
Isso não significa que não podemos instalar!
O que ainda é possível é instalar o comando dentro do diretório inicial , construindo-o a partir da fonte .
Isso tem a vantagem de cuidar de todos os arquivos de suporte associados que podem vir com um comando e de como o programa os encontra. No
fish
exemplo do shell, essas são as funções de conclusão, etc, todas não disponíveis se apenas copiarmos ofish
binário.A criação de um comando a partir da fonte precisa de ferramentas de desenvolvimento e arquivos de desenvolvimento das bibliotecas usadas, o que pode ser muito complicado.
Mas muitos programas vêm com tudo o que precisam em conjunto nas fontes, portanto pode ser fácil. Difícil dizer antes, mas pode-se apenas tentar.
Para instalar um comando no diretório inicial,
configure
é fornecido o caminho para instalação - que precisa ser verificado nas instruções de construção. Por exemplo:Observe que não
sudo make install
é o habitual - pois é o ponto principal de instalá-lo localmente para não precisar do sudo aqui.Para obter informações gerais sobre a instalação de programas a partir da fonte, consulte askubuntu.SE: Como instalo um arquivo .tar.gz (ou .tar.bz2)?
fonte
Eu não acho que você pode executar um shell que está em uma máquina em outra. A única maneira de executá-lo na máquina remota é instalá-lo.
fonte