머신 A(로컬, 여러 라우터 뒤) B(man-in-the-middle) 및 C(원격, A에 액세스하려는 머신)를 통해 역방향 SSH 터널을 구성했습니다.
모든 컴퓨터에 관련 키를 모두 배치한 후
autossh -M 10984 -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no -i /home/user/.ssh/id_rsa.pub 9999:localhost:22 user@machine-B
머신 A에서는 포트 9999를 통해 머신 C에서 머신 B(man-in-the-middle), A로 연결할 수 있습니다.
이제 추가했습니다.
autossh -M 10984 -N -f -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no -i /home/user/.ssh/id_rsa.pub 9999:localhost:22 user@machine-B &
내 /etc/rc.local
파일에 저장하면 부팅 시 명령이 실행되고 재부팅되며 이제 터널이 작동하지 않습니다. 오류가 발생했습니다.
autossh[1966]: starting ssh (count 14)
autossh[1966]: ssh child pid is 4916
autossh[1966]: ssh exited with error status 255; restarting ssh
시스템 로그에.
광산 에는 다음이 /etc/rc.local
있습니다.
autossh -M 10984 -N -f -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /home/user/.ssh/id_rsa.pub -R 9999:localhost:22 user@machine-B &
ethtool -s eth0 autoneg on
exit 0
내가 뭘 잘못하고 있는지 아시나요?
업데이트: 그래도 알아차렸어요
autossh -M 10984 -N -f -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /home/user/.ssh/id_rsa.pub -R 9999:localhost:22 user@machine-B
명령줄에서 작업하려면 다음을 실행하세요.
sudo autossh -M 10984 -N -f -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /home/user/.ssh/id_rsa.pub -R 9999:localhost:22 user@machine-B
비밀번호가 연결되어 있지 않은 경우에도 명령줄에서 공개 키 비밀번호를 묻는 메시지를 표시하도록 했습니다. 이 -f
플래그로 인해 ssh
추가 입력이 요청되지 않는 또 다른 스택 문제(찾을 수 없음)에 대해 읽었습니다 . thigs는 rc.local
(내가 아는 한) 루트로 실행되기 때문에 성공적으로 종료되지 않는 프로세스를 autossh
계속 생성하는 이유라고 생각합니다. ssh
실제로 -f
플래그를 제거하면 우분투에서 비밀번호를 묻는 창을 계속 생성하게 됩니다. 키를 생성할 때 비밀번호를 입력하지 않았습니다.
답변1
나는 당신이 이 웹사이트의 지침을 따랐다고 가정합니다: https://raymii.org/s/tutorials/Autossh_pertant_tunnels.html
올바르게 관찰한 대로 실행해 보세요.
sudo autossh -M 10984 -N -f -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /home/user/.ssh/id_rsa.pub -R 9999:localhost:22 user@machine-B
시작 시 자동 실패를 유발하는 추가 프롬프트입니다.
간단한 해결책은 SSH 키를 "사용자"에서 루트로 복사하는 것입니다.
cp /home/user/.ssh/id_rsa.pub /root/.ssh/id_rsa.pub
cp /home/user/.ssh/id_rsa /root/.ssh/id_rsa -R
그것은 나에게 문제가 되지 않습니다. 복사는 "루트" 계정에서 수행되므로 소유권은 자동으로 "루트"로 설정됩니다. 그런 다음 루트가 호스트를 알 수 있도록 터미널(부팅 아님)에서 autossh 명령을 실행합니다. 루트 폴더의 키에 대한 새 경로를 포함하도록 시작 명령을 수정하면 작업이 완료됩니다.
답변2
동일한 작업이 다음과 같이 해결됩니다.
머신 A에서: sudo su root를 실행하고 autossh를 실행하면 키를 묻는 메시지가 표시됩니다. 모르시나요? "ok"라고 대답하면 문제 없이 연결할 수 있고 rc.local의 명령이 제대로 작동합니다.