원격 호스트에서 SSH 명령을 실행할 수 없는 이유는 무엇입니까?

원격 호스트에서 SSH 명령을 실행할 수 없는 이유는 무엇입니까?

점프박스를 통해 원격 호스트에 액세스하고 있습니다. SSH 셸을 통해 원격 호스트에 액세스하면 쉽게 액세스할 수 있습니다.

ssh remoteHost

Last login: Tue Feb 16 12:56:26 2016 from xx.xxx.xx.xx

remoteHost:user:~$ ls

<shows all the stuff>

하지만 SSH 명령줄 옵션을 통해 명령을 실행하려고 하면 항상 다음과 같은 메시지가 나타납니다.

ssh remoteHost ls

"ls" isn't allowed to be executed.

Killed by signal 1.

다음에서 ssh 명령을 성공적으로 실행할 수 있습니다.일부호스트는 있지만 다른 호스트는 아닙니다.

이것은 서버에서 구성할 수 있는 설정(예: "원격 SSH 명령 허용" 또는 이와 유사한 것)입니까?

FWIW, 나도 좀 봤어비밀번호 없이 SSH를 사용하여 원격 호스트에서 명령 사용을 활성화하는 방법은 무엇입니까?, 그러나 그 질문에 대한 유일한 대답이 나타내는 것처럼 내 문제는 인용과 관련이 없다고 확신합니다.

업데이트:

원격 호스트에는 다음과 같은 내용을 포함하는authorized_keys2 파일이 있습니다.

ssh-rsa <encrypted stuff> jumpbox_user@jumpbox
ssh-rsa <encrypted stuff> jumpbox_user@mydesktop

내 ssh/.config 파일은 다음과 같습니다.

Host remoteHost
  HostName remoteHost
  User user
  ProxyCommand ssh -W %h:%p jumpbox_user@jumpbox_host
  ServerAliveInterval 60

답변1

옵션 을 사용하여 ssh 라인을 실행 -t하고 원격 명령이 '로 구분되어 있는지 확인하십시오. 그러면 ssh가 원격 호스트에서 명령을 실행하도록 지시하므로 라인에서 훨씬 더 오류가 발생하지 않게 됩니다.

ssh user@remoteHost -t 'ls'

참고: -t 옵션을 사용하면 실제로 SSH 터미널을 열고 명령을 입력한 다음 STDOUT을 출력하고 종료하는 것을 시뮬레이션하는 의사 터미널 할당이 활성화됩니다. 이는 앞서 언급한 대로 수동으로 수행한 작업과 정확히 같습니다.

SSH 맨페이지에 따르면:

-t 의사 터미널 할당을 강제합니다. 이는 원격 시스템에서 임의의 화면 기반 프로그램을 실행하는 데 사용할 수 있으며, 이는 예를 들어 메뉴 서비스를 구현할 때 매우 유용할 수 있습니다. 여러 -t 옵션은 ssh에 로컬 tty가 없더라도 tty 할당을 강제합니다.

참고자료:

SSH 매뉴얼 페이지

의사 TTY 할당이란 무엇입니까?

관련 정보