비밀번호 없이 SSH를 사용하여 원격 호스트에서 명령 사용을 활성화하는 방법은 무엇입니까?

비밀번호 없이 SSH를 사용하여 원격 호스트에서 명령 사용을 활성화하는 방법은 무엇입니까?

두 호스트 간에 SSH를 사용하도록 설정되었으며 비밀번호는 필요하지 않습니다.

SSH 로그인은 제대로 작동하지만 다음 오류와 함께 명령 실행이 실패합니다.

**isn't allowed to be executed with process or redirect controls.**

사용할 수 있는 간단한 명령:

ssh remo-tehost " echo \"\test\"  >> \"/home/alarmstest.log\" "

내가 얻는 실행 추적 :

debug1: Sending command:  echo "test"  >> "/home/alarmstest.log" 
debug2: channel 0: request exec confirm 1
debug2: fd 3 setting TCP_NODELAY
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel 0: rcvd adjust 2097152
debug2: channel_input_status_confirm: type 99 id 0
debug2: exec request accepted on channel 0
debug2: channel 0: rcvd ext data 117

원격 서버의 sudosh 사용자가 사용하는 user:x:500:500::/home/user:/usr/local/bin/sudoshauthorized_keys가 있습니다. -rw 내부 + 키 ------- 사용자 1명 사용자 9092 12월 13일 07:53 authenticate_keys

답변1

이건 인용 문제인 것 같습니다. ssh를 통해 쉘 명령을 실행하려고 할 때마다 원격 쉘(예: Bash)은 이를 /bin/bash -c <command-line>따옴표 쌍으로 수신한다는 점을 기억하십시오.

ssh remo-tehost "echo test  >> /home/alarmstest.log"

이 쌍은 로컬 셸(즉, 명령줄을 실행하는 데 사용되는 셸)이 인수를 해석하는 것을 방지하는 데 중요합니다.

답변2

홈 디렉토리 권한 문제로 인해:

원격 호스트의 ~home 디렉터리, ~/.ssh 디렉터리 및 ~/.ssh/authorized_keys 파일은 700 또는 755, 775를 사용하는 사용자만 쓸 수 있어야 하며 아무런 효과가 없습니다.

개인 키 파일(localhost)은 rw----, 600을 사용하는 사용자만 읽고 쓸 수 있습니다.

관련 정보