/etc/inittab의 autossh

/etc/inittab의 autossh

NAT 뒤의 대상 컴퓨터에 연결할 수 있도록 SSH 터널을 설정했습니다. 내 컴퓨터의 /etc/inittab에 다음을 넣었습니다.

tu:2345:respawn:/usr/bin/autossh -M 20000 -f -n -N -T -R 6790:localhost:22 [email protected]

작동합니다. 즉, ssh -p 6790 me@localhost를 실행하여 연결할 수 있습니다. 그러나 때때로 대상 컴퓨터에 다음과 같은 메시지가 표시됩니다.

INIT: Id "tu" respawning too fast, disabled for 5 minutes

서버의 /var/log/secure에서 다음을 볼 수 있습니다.

Oct 29 03:11:15 vm sshd[19725]: Accepted publickey for me from 90.179.155.74 port 37416 ssh2
Oct 29 03:11:15 vm sshd[19727]: Received disconnect from 90.179.155.74: 11: disconnected by user
Oct 29 03:17:04 vm sshd[20892]: Accepted publickey for me from 90.179.155.74 port 40116 ssh2
Oct 29 03:17:15 vm sshd[20896]: error: bind: Address already in use
Oct 29 03:17:19 vm sshd[20896]: error: channel_setup_fwd_listener: cannot listen to port: 20000

이런 상황이 계속되고 있습니다. 무엇이 잘못될 수 있는지 아시나요?

답변1

알겠습니다. 답을 찾았습니다. -f 옵션을 사용하여 autossh를 호출하면 자체적으로 데몬 프로세스로 포크되고 상위 프로세스가 종료됩니다. 그래서 init는 그것을 다시 생성합니다...그리고 계속해서...

나는 autossh를 사용해야 한다고 생각하지 않고 단지 ssh만 사용해야 한다고 생각합니다. respawn은 init에 의해 수행되기 때문에 autossh에 의한 또 다른 자동 respawn은 필요하지 않을 것 같습니다. 나는 그 줄을 다음과 같이 바꿨다. tu:2345:respawn:/usr/bin/ssh -n -N -T -R 6791:localhost:22 [email protected]

나도 추가했다

ServerAliveInterval 15
ServerAliveCountMax 2

연결을 유지하려면 /etc/ssh/ssh_config로 이동하십시오.

내 생각엔 이 설정이 괜찮을 것 같다.

답변2

ssh자신의 답변에서 말한 것처럼 대신 good old를 사용하는 것이 autossh효과적이라면 그것은 좋을 것이며 읽기를 중단할 수 있습니다.

나는 ssh/sshd 구성 조정이 전혀 작동하지 않고 때로는 신뢰할 수 있는 터널이 작동하는 상황에 여러 번 있었습니다.보류어쨌든 선의로 충돌하는 것보다. 이 모든 경우에 autossh그것은 매력처럼 작동합니다.

따라서 결국 이것으로 돌아가게 되면 autossh제가 사용하는 방법은 다음과 같습니다. inittab세션 내에서 실행하는 대신 screen세션 내에서 실행합니다. 간단한 스크립트를 작성하고 다음과 같이 호출해 보겠습니다 autossh.sh.

#!/bin/sh
tunnelsite=autossh-host1
if ! screen -ls | grep -F .$tunnelsite >/dev/null; then
    screen -d -m -S $tunnelsite autossh -N $tunnelsite
fi

스크립트는 이미 실행 중인 지정된 이름의 스크린 세션이 있는지 확인하고, 있으면 종료하고, 그렇지 않으면 생성합니다.

주기적으로 실행되도록 크론 작업을 예약합니다.

*/15 * * * * AUTOSSH_PORT=0 /path/to/autossh.sh

이것은 AUTOSSH_PORT=0Mac OS X에서 겪고 있는 이상한 문제를 해결하기 위한 것입니다. 무시하셔도 되지만 저는 Linux에서도 이 방법을 문제 없이 사용하고 있습니다.

마지막으로 보안 팁: 아직 이 작업을 수행하지 않는 한 전용 SSH 키를 사용하여 autossh를 통해 터널을 인증하고 .ssh/authorized_keys다음 옵션으로 키 인증을 제한합니다.

command="/bin/false",no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA...

이렇게 하면 키가 손상되더라도 터널을 만드는 데에만 사용할 수 있습니다.

실제로 GitHub에 이 설정을 더 쉽게 해주는 스크립트 프로젝트가 있습니다.https://github.com/janosgyerik/autossh-tunnel

관련 정보