명령을 전달하고 파일을 호스트 서버에서 개발 보드로 전송하는 방법을 만들어야합니다.netcat을 사용하는 통신 프로토콜
- 보드에 대한 유일한 액세스는 호스트 서버를 통한 것입니다 (유선 이더넷 연결).
- 호스트 서버와 보드 모두 Linux를 실행 중입니다.
- 저는 보드에서 Linux 환경을 변경할 수 있습니다.
- 호스트 서버 환경을 변경할 수 없습니다.
- 나는 어떤 사용자가 보드에 연결해야하는지 알지 못합니다.
- 호스트 서버와 보드 간의 연결은 안전 할 필요가 없습니다.
지금 당장은 내 요구에 netcat을 사용하고 있지만 안정성 문제가 발생했습니다. 누군가 내 요구와 성능면에서 더 적합한 도구를 가르쳐 줄 수 있습니까?
내 현재 솔루션 : 스크립트는 지속적으로 보드에서 실행중인
:
while [ 1 ] ; do
# Start a netcat server, awaiting a file.
nc -l -p 1357 > file.bin
# Acknowledge receipt of file.
status=fail
while [ ${status} -ne 0 ] ; do
status=$(echo 0 | nc <host_ip> 2468 2>&1)
done
# Wait for a command.
nc -l -p 1357 -e /bin/sh
# Acknowledge receipt of command.
status=fail
while [ ${status} -ne 0 ] ; do
status=$(echo 0 | nc <host ip> 2468 2>&1)
done
done
사용자가 보드에 액세스 할 수있는 유일한 방법은 서버의 스크립트를 통해입니다 :
# Send over a file.
cat some_file.bin | /bin/nc -w 10
# Wait for acknowledge.
if [ $(nc -l 2468) -ne 0 ] ; then
exit # Fail
fi
# Send a command.
echo "<some_command>" | nc -w 10 <board ip> 1357
# Wait for acknowledge.
if [ $(nc -l 2468) -ne 0 ] ; then
exit # Fail
fi
netcat을 사용하는 이유는 암호없이 SSH 또는 SCP를 사용하는 방법을 모른다는 것입니다.
- 보드에 액세스해야하는 모든 사용자를 위해 SSH 키를 생성 할 수 없습니다. 특히 누가이 키를 사용할 지 모르기 때문에이 키를 생성 할 수 없습니다.
- 서버를 제어 할 수 없어서 sshpass를 설치할 수 없거나 예상 할 수 없습니다.
도와주세요, 감사합니다.
OP 문에 '호스트 서버 환경을 변경할 수 없습니다.' '호스트의 SSH 클라이언트 구성 수정'을 차단 하시겠습니까? 모두에게 행운을 빕니다. – shellter
@shellter OP가 호스트에서'ssh board'를 실행할 수 있다면 그는'ssh -o HostbasedAuthentication board'를 실행할 수 있어야합니다. – damienfrancois