ssh command e shell não interativo de login

2

Há uma frase na postagem abaixo.
Diferença entre o Login Shell e o Non-Login Shell?

O foco está aqui:
Outra maneira de obter um shell de login não interativo é efetuar login remotamente com um comando passado pela entrada padrão que não é um terminal, por exemplo, ssh example.com <my-script-which-is-stored-locally (em oposição a ssh example.com my-script-which-is-on-the-remote-machine , que executa um não interativo, shell não-login).

O autor chega a duas conclusões da descrição acima.

  1. shell de login não interativo

    ssh example.com <my-script-which-is-stored-locally           
    
  2. não-interativo, não-login shell

    ssh example.com my-script-which-is-on-the-remote-machine
    

Eu não acho que a segunda conclusão esteja certa.
Quando executar ssh example.com my-script-which-is-on-the-remote-machine , o nome da conta e a senha ainda deverão ser inseridos localmente.
Ainda é um shell de login não interativo!

shell de login: Um shell de login faz login no sistema como um usuário espiificado, necessário para isso é um nome de usuário e senha
De acordo com a descrição da web no shell de login

Para o shell não-interativo não-interativo, dê um exemplo aqui: alguns daemon como mysqld ou apache2, todos eles são não-interativos e não-login shell.

É a sua vez: verdadeiro ou falso?

    
por it_is_a_literature 06.03.2017 / 09:43

2 respostas

2

When to execute ssh example.com my-script-which-is-on-the-remote-machine, account name and password still be asked to input locally.

It is still a non-interactive login shell!

A interatividade do shell de login não é definida pelo caso "você digita login e senha". Você é solicitado a fornecer a senha pelo seu local ssh (ou as chaves são usadas), ela as passa ao servidor sshd remoto e somente se elas forem verificadas corretamente, você receberá um shell (a menos que você use UseLogin yes no sshd_config , o que é bastante perigoso).

    
por 06.03.2017 / 09:58
2

O login é o conceito principal no jargão - login shell.
Existem quatro etapas abstraídas para descrever o trabalho do Linux: Init, Getty, Login, Shell.
Aqui, login é um programa que obtém o nome de usuário como parâmetro e solicita ao usuário a senha.
No lado local:

vim   /tmp/shell.sh   
shopt login_shell 

No lado do servidor (meu servidor vps):

vim   /tmp/shell.sh   
shopt login_shell 

1. shell de login não interativo
formato geral: ssh example.com <my-script-which-is-stored-locally

ssh  root@vps_ip  < /tmp/shell.sh
Pseudo-terminal will not be allocated because stdin is not a terminal.
login_shell     on

Mais claramente

ssh -t -t root@vps_ip  < /tmp/shell.sh
Last login: Wed Mar  8 03:16:00 2017 from vps_ip
root@localhost:~$ 
root@localhost:~$ shopt login_shell 
login_shell     on

O intérprete na divisão local ssh -t -t root@vps_ip < /tmp/shell.sh em duas partes.
1.ssh -t -t root @ vps_ip
programa de login aceita root como usuário no vps, logado.
2./tmp/shell.sh
o script no lado local passou como um parâmetro para o interpretador no lado remoto e foi executado.

É shell de login não interativo durante o processo.

2. shell não-interativo não-login
formato geral: ssh example.com my-script-que-é-armazenado-na-máquina remota

debian8@hwy:~$ssh   root@vps_ip  '/bin/bash /tmp/shell.sh'
login_shell     off
debian8@hwy:~$

É um shell não-interativo não interativo durante o processo.

Algum truque de hack pode fazer com que seja exibido como shell de login.

debian8@hwy:~$ssh   root@vps_ip  '/bin/bash --login /tmp/shell.sh'
login_shell     on
debian8@hwy:~$

O servidor vps não será logado após todo o comando raiz ssh @ vps_ip '/ bin / bash --login /tmp/shell.sh' ser executado.
O login_shell em não exibia nenhum significado, ele era logado, mas a conexão fechada do servidor vps foi encerrada. Conclusões de Gilles sobre shell de login não interativo e não interativo O shell não-login está correto.

    
por 08.03.2017 / 10:17