SSH 연결 후 연결을 끊지 않고 명령을 어떻게 실행합니까?

SSH 연결 후 연결을 끊지 않고 명령을 어떻게 실행합니까?

SSH 세션을 자동으로 닫지 않고 SSH를 통해 다른 컴퓨터에 연결한 후 자동으로 명령을 실행하고 싶습니다.

인터넷을 검색한 후 몇 가지 해결책을 찾았지만 그 중 어느 것도 내가 원하는 방식으로 작동하지 않았습니다.

ssh bla@bla "ls"

그러면 ls원격 시스템에서 명령이 실행되고 출력이 표시되며 연결이 닫힙니다.

또한 ssh 구성 파일을 편집해 보았습니다.

Host bla
        HostName bla
        User bla
        IdentityFile ~/.ssh/key
        RemoteCommand ls
        RequestTTY force 

같은 문제입니다. SSH를 통해 연결하고, ls명령을 실행하고, 출력을 표시한 다음 종료됩니다. 옵션 조차 RequestTTY도움이 되지 않았습니다.

ssh bla@bla "ls ; bash"

실행 후 연결이 끊어지지 않지만 ls전체 터미널 인터페이스가 표시되지 않고 me@machine:~$ thing.

내가 실제로 원하는 것:

bash 별칭 또는 .ssh/config원격 시스템에 연결하는 간단한 명령을 입력한 다음 거기에서 명령을 실행하고 터미널을 열어 둘 수 있는 항목입니다. 기본적으로 내가 직접 이 작업을 수행한 것처럼:

유형

ssh blah@blah

연결한 후 다음을 입력합니다.

ls

답변1

ssh bla@bla "ls ; bash"

실행 후 연결이 끊어지지 않지만 ls전체 터미널 인터페이스가 표시되지 않고 일부 기본 명령줄만 표시되지 않습니다 me@machine:~$.

명령(예: 위)을 지정하면 ls ; bashSSH 서버는 의사 터미널을 제공하지 않습니다. 당신은 이것을 정확히 관찰했습니다.

반면에 단독은 ssh bla@bla기본적으로 의사 터미널을 할당합니다. 그래서 이것이 당신이 원하는 것입니다. 의사 터미널 할당을 강제하려면 -t또는 를 사용하세요 RequestTTY.

옵션 조차 RequestTTY도움이 되지 않았습니다.

원격 명령만 있으면 도움이 되지 않습니다 ls. 필요 ls; bash하거나 유사합니다.

tty를 요청했을 때 를 요청하지 않은 것 같습니다 bash. 그리고 bash이후에 요청했을 때 lstty를 요청하지 않았습니다. 다음 두 가지가 모두 필요합니다.

ssh -t bla@bla "ls; bash"

Note에서는 ls의사 터미널도 사용합니다. 의 "더 넓은 그림" 섹션을 읽어 보십시오.내 이 대답차이점을 알아보기 위해(특히 "특이한 점이 있습니다"라고 읽는 경우)

답변2

me@machine을 제거하려면 PS1 환경 변수를 설정해야 합니다. 노력하다:

ssh bla@bla "PS1=\"\"; ls; bash"

관련 정보