시스템 시작 시 역방향 SSH 터널 자동 시작

시스템 시작 시 역방향 SSH 터널 자동 시작

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를 통해) 명령을 실행할 수 있으며 비밀번호는 묻지 않습니다. 루트()로 명령을 실행하면 sudorsa 파일의 (빈) 비밀번호를 묻는 메시지가 표시됩니다. 내 문제는 여기에 있다고 생각됩니다. 즉, 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 -ecron을 편집하십시오. 컴퓨터가 부팅되면 해당 명령을 실행하려면 다음 줄을 추가하세요.

@reboot ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa  [email protected]

관련 정보