백그라운드에서 autossh가 작동하지 않습니다


12

autossh를 통해 터널을 설정했습니다.

이것은 작동합니다 :

autossh -M 33201 -N -i myIdFile -R 33101:localhost:22 autossh@myhost.com

백그라운드에서 autossh를 실행하고 싶습니다. -f옵션을 사용하면 쉽게 보입니다 .

그러나 이것은 작동하지 않습니다.

autossh -f -M 33201 -N -i myIdFile -R 33101:localhost:22 autossh@myhost.com

Autossh는 백그라운드에서 제대로 실행되지만 ssh 연결은 매번 실패하는 것 같습니다. / var / syslog에서 다음과 같은 여러 가지 발생이 나타납니다.

autossh[3420]: ssh exited with error status 255; restarting ssh

내가 뭘 잘못하고 있죠? 키 파일을 통한 인증과 관련이 있습니다. 이것을 어떻게 디버깅 할 수 있습니까 (ssh 옵션에 -v를 추가해도 어디에도 기록되지 않습니다).

편집 : -y 옵션을 사용하여 ssh 로그를 얻었습니다 .

/usr/bin/ssh[3484]: debug1: Next authentication method: publickey
/usr/bin/ssh[3484]: debug1: Trying private key: /home/myuser/.ssh/id_rsa
/usr/bin/ssh[3484]: debug1: Trying private key: /home/myuser/.ssh/id_dsa
/usr/bin/ssh[3484]: debug1: Trying private key: /home/myuser/.ssh/id_ecdsa
/usr/bin/ssh[3484]: debug1: No more authentication methods to try.
/usr/bin/ssh[3484]: fatal: Permission denied (publickey).
autossh[3469]: ssh exited with error status 255; restarting ssh

따라서 -i myIdFile-f 옵션을 사용할 때 autossh가 내 식별 파일 ( )을 허용하지 않는 것 같습니다 . 왜 그런 겁니까?

(Raspian의 autossh 1.4c)


왜 autossh를 사용합니까? "실패시 재시작"에 systemd를 사용할 수 있습니다. 내 솔루션으로 요지를 만들었습니다 : gist.github.com/guettli/…
guettli

답변:


29

autossh가 백그라운드 (-f 옵션)로 떨어지면 작업 디렉토리가 변경되어 상대 경로가 더 이상 작동하지 않는 것 같습니다. 또는 더 구체적으로 : 당신의 ID 파일의 절대 경로입력 하면 아마 성공할 것입니다.

기본 위치가 아닌 곳에 암호가없는 키를 만들어 시나리오를 다시 만들었습니다.

~/$ mkdir test
~/$ cd test
~/test$ ssh-keygen -f test_id_rsa

비밀번호로 보호되지 않는 키를 생성하기 위해 Enter를 두 번 누르십시오.

새 키를 서버에 복사했습니다 (현재 비밀번호 인증이 가능함).

~/test$ ssh-copy-id -i test_id_rsa user@server

먼저 키가 일반 ssh와 함께 작동하고 다음과 같이 autossh를 사용하고 있음을 확인했습니다.

~/test$ ssh -i test_id_rsa user@server
~/test$ autossh -M 13000 -N -i test_id_rsa user@server
^C

둘 다 잘 작동 했으므로 나는 당신이 가진 문제를 재현했습니다.

~/test$ autossh -f -M 13000 -N -i test_id_rsa user@server

이것은 작동하지 않았으며 다음과 같이 작성되었습니다 /var/log/syslog.

autossh [2406] : ssh가 상태 255로 조기에 종료되었습니다. 자동 종료

키 파일의 경로를 절대 경로로 변경하면 다음과 같이 작동합니다.

~/test$ autossh -f -M 13000 -N -i /home/user/test/test_id_rsa user@server

에 오류가 없습니다 /var/log/syslog.


대단합니다.
henning77

당신은 내 하루를 구했다!
arno_v

2
-N 옵션이 중요합니다. 그렇지 않으면 "ssh가 상태 0으로 종료되고 autossh가 종료됩니다"가 표시됩니다. 감사!
user30747

확인했듯이 autossh -M 19001 -fN -y -i /home/pi/.ssh/id_rsa (감사 @jmidgren)
Rich

4

-f로 무슨 일이 일어나고 있는지 확실하지 않지만 당신은 그것을 nohup 할 수도 있습니다 :

nohup autossh -M 33201 -N -f -i myIdFile -R 33101:localhost:22 autossh@myhost.com &

키 파일을 지정하지 않아도 nohup이 작동합니다.
valadil

nohup또한 실행하는 일 autossh에서 runit알파인 리눅스
스튜어트 Cardall에게

0

"연결을 계속 하시겠습니까 (예 / 아니요)"를 무시하려면 SSH에 다음 매개 변수를 추가하십시오.

-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

최종 명령은 다음 형식입니다.

autossh -f -M $BASE_PORT -N -R $LOCAL_PORT:$LOCALHOST:$REMOTE_PORT $USER@$SERVER -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

그것은 나를 위해 작동합니다.
bluebird_lboro

StrictHostKeyChecking=no잘 알려진 임시 장난감에 연결 하지 않고 게 으르도록 선택 하지 않는 한 활성화 하지 마십시오 .
Dolph
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.