현재 SSH 터널을 생성하는 Bash 스크립트를 작성 중입니다. 이 작업이 완료되면 SSH 터널이 열린 상태에서 내 시스템에서 작업할 수 있도록 스크립트가 새 로컬(!) 대화형 셸을 열도록 하고 싶습니다.
입력하면 exit
로컬 셸이 닫히고 원래 스크립트는 계속 실행됩니다.
내 현재 접근 방식은 기본적으로 다음과 같습니다.
#!/usr/bin/env bash
set -e
ssh -N user@ip -L xxx:xxx &
SSH_CONNECTION=${!}
trap "kill ${SSH_CONNECTION}" ERR
sleep 3
bash -i
kill ${SSH_CONNECTION}
지금까지는 로컬 셸 실행을 제외하고 모든 것이 작동합니다. 실제로 쉘을 얻었고 심지어 입력도 할 수 있지만 <Return>
.
내가 뭘 잘못하고 있는지 아시나요?
답변1
-f
연결이 설정되면 연결이 백그라운드로 전환되도록 사용해야 합니다 . 그러면 다음이 필요하지 않습니다 &
.
ssh -Nf -L xxx:xxx user@ip
처리가 bash
.