
SSH를 통해 연결하려는 방화벽 뒤에 원격 시스템이 있습니다. 내가 아는 한 이는 역방향 SSH 터널을 사용하여 달성할 수 있습니다.
그래서 내가 사용하는 명령은
ssh -N -f -R 0.0.0.0:1234:localhost:22 -i /home/username/.ssh/id_rsa.pub [email protected]
내 주요 문제는 컴퓨터가 시작될 때마다 이 명령을 실행하여 재부팅 후 컴퓨터에 액세스할 수 있다는 것입니다.
내 사용자의 crontab과 /etc/cron
. 그러나 내가 가진 문제는 두 명령 모두 암호를 요구한다는 것입니다. 파일을 생성하여 the id_rsa.pub
원격 서버로 보냈으나 여전히 작동하지 않는 것 같습니다.
로그인한 경우(예: teamviewer를 통해) 명령을 실행할 수 있으며 비밀번호는 묻지 않습니다. 루트()로 명령을 실행하면 sudo
rsa 파일의 (빈) 비밀번호를 묻는 메시지가 표시됩니다. 내 문제는 여기에 있다고 생각됩니다. 즉, cron이 명령을 실행할 때 ssh가 비밀번호를 묻고 명령이 중단되는 것입니다.
내 사용자의 rsa 파일과 루트의 rsa 파일을 모두 사용해 보았지만 그 중 어느 것도 연결하지 못했습니다.
답변1
'수면 60'을 추가하세요. SSH 명령 앞에:
@reboot sleep 60;ssh -N -f -R 0.0.0.0:1234:localhost:22 -i /home/username/.ssh/id_rsa [email protected]
재부팅 후에도 네트워크가 여전히 다운되어 있습니다.
답변2
여러 소스를 결합한 후 역방향 SSH 채널을 자동 시작하는 서비스를 만들었습니다. 구성 파일과 필요한 단계가 있습니다. 이 저장소에
답변3
더 나은 해결책은 다음과 같습니다.autossh:
"autossh는 ssh의 복사본을 시작하고 모니터링하며, ssh가 죽거나 트래픽 전달이 중지되면 필요에 따라 다시 시작하는 프로그램입니다."
인용문에서 알 수 있듯이 이는 '항상 켜져 있는' 기능을 제공한다는 추가 이점이 있습니다.
답변4
SSH 문제 해결
다음으로는 원격 컴퓨터를 인증할 수 없습니다.공공의열쇠, 당신은 사용해야합니다사적인그러기 위한 열쇠. 공개 키는 원격 서버에 있어야 합니다. 확실하지 않은 경우 공개 키를 다음과 같이 원격 서버에 복사하십시오.
ssh-copy-id -i ~/.ssh/id_rsa.pub username@remoteserver
그런 다음 개인 키를 사용하여 명령을 실행하십시오.
ssh -N -f -R 0.0.0.0:1234:localhost:22 -i /home/username/.ssh/id_rsa [email protected]
부팅 시 이 명령 실행
이미 crontab을 사용했으므로 실행하여 crontab -e
cron을 편집하십시오. 컴퓨터가 부팅되면 해당 명령을 실행하려면 다음 줄을 추가하세요.
@reboot ssh -N -f -R 0.0.0.0:1234:localhost:22 -i /home/username/.ssh/id_rsa [email protected]