ssh 명령 및 비대화형, 비로그인 쉘

ssh 명령 및 비대화형, 비로그인 쉘

아래 글에 이런 문장이 있습니다.
로그인 쉘과 비로그인 쉘의 차이점은 무엇입니까?

핵심은 다음과 같습니다.
비대화형 로그인 쉘을 얻는 또 다른 방법은 터미널이 아닌 표준 입력을 통해 전달된 명령을 사용하여 원격으로 로그인하는 것입니다(
ssh example.com <my-script-which-is-stored-locally비대화형, 비로그인 쉘을 실행하는 것과 반대) ssh example.com my-script-which-is-on-the-remote-machine.

저자는 위의 설명에서 두 가지 결론을 도출합니다.

  1. 비대화형 로그인 셸

     ssh example.com <my-script-which-is-stored-locally           
    
  2. 비대화형, 비로그인 셸

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

나는 두 번째 결론이 옳다고 생각하지 않습니다.
을 실행할 때 ssh example.com my-script-which-is-on-the-remote-machine계정 이름과 비밀번호를 로컬로 입력해야 합니다.
여전히 비대화형 로그인 쉘입니다!

로그인 쉘: 로그인 쉘은 지정된 사용자로 시스템에 로그인하며, 사용자 이름과 비밀번호가 필요합니다.
네트워크에 따라로그인 쉘에 대한 설명

비대화형 및 비로그인 쉘의 경우 예가 있습니다. mysqld 또는 apache2와 같은 일부 데몬 프로세스는 모두 비대화형 및 비로그인 쉘입니다.

당신의 차례: 참인가, 거짓인가?

답변1

ssh example.com my-script-which-is-on-the-remote-machine을 실행할 때 로컬 계정 이름과 비밀번호가 여전히 필요합니다.

여전히 비대화형 로그인 쉘입니다!

로그인 쉘의 상호작용은 "로그인 이름과 비밀번호를 입력"하는 것으로 정의되지 않습니다. 로컬은 암호 ssh(또는 키 사용)를 묻는 메시지를 표시하고 암호를 원격 sshd서버로 전달하며 올바르게 검증된 경우에만 암호를 제공합니다 shell( UseLogin yes에서 사용 하지 않는 한 sshd_config매우 위험합니다).

답변2

전문 용어로 로그인하는 것이 핵심 개념인 로그인 쉘입니다.
Linux 작업을 설명하는 네 가지 추상 단계는 Init, Getty, Login 및 Shell입니다.
여기서 로그인은 사용자 이름을 매개변수로 사용하고 사용자에게 비밀번호를 묻는 프로그램입니다.
로컬 측:

vim   /tmp/shell.sh   
shopt login_shell 

서버 측(내 vps 서버):

vim   /tmp/shell.sh   
shopt login_shell 

1. 비대화형 로그인 쉘
의 일반 형식 :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

더 명확하게

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

현지 번역 중단ssh -t -t root@vps_ip < /tmp/shell.sh두 부분으로 나뉩니다.
1.ssh -t -t root@vps_ip
로그인 프로그램은 로그인할 vps의 사용자로 루트를 허용합니다. 2.
/tmp/shell.sh 의 로컬 측 스크립트가
원격 측 인터프리터에 매개변수로 전달되어 실행됩니다.

프로세스는 비대화형 로그인 셸입니다.

2. 비대화형 비로그인 셸
의 일반 형식 :SSH example.com my-script-which-is-stored-on-remote-machine

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

프로세스는 비대화형, 비로그인 셸입니다.

일부 트릭을 사용하면 로그인 셸로 표시될 수 있습니다.

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

전체 명령 후에 vps 서버가 로그인되지 않습니다ssh root@vps_ip '/bin/bash --login /tmp/shell.sh'구현하다.
이것로그인 셸이 열립니다.표시가 의미가 없습니다. 로그인했지만 vps 서버가 연결을 닫고 종료됩니다.
자일스의 결론 비대화형 로그인 쉘 및 비대화형 비로그인 쉘맞습니다.

관련 정보