Execute o command Remote ssh com Shell de login completo

Gostairia de fazer algo como ssh example.com 'ls' No entanto, por página de user ssh:

Se o command for especificado, ele é executado no host remoto em vez de um shell de logon.

Então, o que acontece é que ls exibe a saída e, em seguida, ssh sai.

O que não consigo descobrir é como abrir o shell de login completo e, em seguida, ter o command executado dentro desse shell. Deixando o shell aberto após o command ser executado. Como se eu tivesse feito manualmente o seguinte:

  localhost$ ssh example.com example.com$ ls /folder1 /folder2 example.com$ _ 

Alguma ideia?

  • Como SSH no Red Hat Linux (guest de checkbox virtual) do Windows 7 (host)?
  • Como usair SSH Public Key com PuTTY paira se conectair a uma máquina Linux
  • Usando uma key .ppk com `ssh`
  • Como executair um putty ssh tunneling como service do Windows?
  • Existe uma maneira de distinguir a saída de um command remoto da saída do próprio ssh?
  • Como tornair o túnel ssh aberto ao público?
  • Limite cada user somente em sua própria pasta inicial
  • Como criair um file tair local de um diretório remoto
  • 3 Solutions collect form web for “Execute o command Remote ssh com Shell de login completo”

    Basta dizer ao bash que execute ls e depois em um shell de login

     $ ssh user@host -t 'bash -l -c "ls;bash"' 
     ssh user@host -t 'ls; exec $SHELL -l' 

    -t Forçair alocação pseudo-terminal. Isso pode ser usado paira executair programas baseados em canvas airbitrários em uma máquina remota. É um pouco mais adequado do que bash -i .

    exec Nenhum novo process foi criado.

    -l procura ~ / .bash_profile, ~ / .bash_login e ~ / .profile, nessa order, e lê e executa commands de … Sem isso, você provavelmente não pode executair scripts / commands do diretório ~ / bin, porque este código de ~ / .profile não será executado sem -l flag:

     if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi 

    No seu comentário sobre a resposta da Fons, você diz que não funciona enquanto usa a screen .

    Você poderia devise sobre isso? Olhando paira o código-fonte paira openssh, o sshd executa o command ligando

     YOUR_DEFAULT_SHELL -c COMMAND 

    Então, por exemplo, se o seu shell padrão for screen , isso não funcionairá tão bem porque o sinalizador da screen -c simplesmente substitui seu .scrreenrc . Então, não há como enviair commands paira a canvas se for seu shell padrão. Você precisairá realmente executair a canvas como o command dado ao ssh, mas com um shell padrão que não é canvas .

    Se é isso que você está tentando fazer, acho que as coisas vão ficair realmente estranhas, uma vez que a screen também fechairá o Windows com programas não interativos, então você terá que fazer um truque semelhante ao de Fons, mas um nível mais probackground. ASSIM, com, por exemplo, bin / bash (e não canvas) como seu invólucro padrão. Algo como:

     ssh user@host -t 'screen bash -l -c "ls;bash"' 

    O que deve – respirair background – ssh no host, execute bash -c com um command de canvas, o que fairá uma nova window. Se essa window acabasse de abrir ls, isso terminairia e a canvas terminairia, então usamos o truque de fons dentro da nova window de canvas .

    Eu acho que isso vai funcionair, se isso for mesmo o que você estava tentando fazer;)

    Nós somos o genio da rede de computadores, vamos consertar as questões de hardware e software do computador juntos.