내 VPS에는 SSH를 캡슐화하기 위한 stunnel이 있는 Debian 11 시스템이 있습니다(이유는 묻지 마세요).
구성 파일이 있습니다 /etc/stunnel/proxy-ssh.conf
.
[proxy-ssh]
cert = /etc/ssl/private/le-vps1.merlin-vrn.tk-key+fullchain.pem
accept = 1443
connect = 22
수동으로 시작하면 다음과 같이 시작됩니다.
# ss -lnpt | grep -c 1443
0
# stunnel /etc/stunnel/proxy-ssh.conf
# ss -lnpt | grep 1443
LISTEN 0 128 0.0.0.0:1443 0.0.0.0:* users:(("stunnel",pid=10121,fd=10))
syslog
다음 콘텐츠가 포함되어 있습니다:
Oct 11 09:12:02 vps1 stunnel: LOG5[ui]: stunnel 5.56 on x86_64-pc-linux-gnu platform
Oct 11 09:12:02 vps1 stunnel: LOG5[ui]: Compiled with OpenSSL 1.1.1k 25 Mar 2021
Oct 11 09:12:02 vps1 stunnel: LOG5[ui]: Running with OpenSSL 1.1.1w 11 Sep 2023
Oct 11 09:12:02 vps1 stunnel: LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6,SYSTEMD TLS:ENGINE,FIPS,OCSP,PSK,SNI Auth:LIBWRAP
Oct 11 09:12:02 vps1 stunnel: LOG5[ui]: Reading configuration from file /etc/stunnel/proxy-ssh.conf
Oct 11 09:12:02 vps1 stunnel: LOG5[ui]: UTF-8 byte order mark not detected
Oct 11 09:12:02 vps1 stunnel: LOG5[ui]: FIPS mode disabled
Oct 11 09:12:02 vps1 stunnel: LOG5[ui]: Configuration successful
Oct 11 09:12:02 vps1 stunnel: LOG5[ui]: Binding service [proxy-ssh] to :::1443: Address already in use (98)
Oct 11 09:12:24 vps1 stunnel: LOG5[0]: Service [proxy-ssh] accepted connection from xx.xx.xxx.xx:51104
Oct 11 09:12:24 vps1 stunnel: LOG5[0]: s_connect: connected ::1:22
Oct 11 09:12:24 vps1 stunnel: LOG5[0]: Service [proxy-ssh] connected remote server from ::1:59156
Oct 11 09:12:25 vps1 systemd[1]: Started Session 73843673 of user yyyy.
따라서 작동합니다(연결이 허용되는 것을 볼 수 있습니다). 포트 1443에서 수신 대기 중인 Binding service [proxy-ssh] to :::1443: Address already in use (98)
항목 ss
이 없음을 분명히 보여주지만 작동을 방해하지는 않는다는 메시지가 왜 나오는지 잘 모르겠습니다 .
데비안은 systemd 템플릿 유닛을 제공합니다 [email protected]
. [email protected]
구성 파일을 사용하여 stunnel을 실행하는 서비스를 활성화하고 시작해야 했기 proxy-ssh.conf
때문에 수동으로 stunnel을 종료하고 서비스를 실행했습니다.
# systemctl status [email protected]
● [email protected] - TLS tunnel for network daemons - per-config-file service
Loaded: loaded (/lib/systemd/system/[email protected]; enabled; vendor preset: enabled)
Active: inactive (dead) since Wed 2023-10-11 09:26:36 +04; 4min 55s ago
Docs: man:stunnel4(8)
Process: 10314 ExecStart=/usr/bin/stunnel4 /etc/stunnel/proxy-ssh.conf (code=exited, status=0/SUCCESS)
Main PID: 10314 (code=exited, status=0/SUCCESS)
root@vps1:/var/log# ss -lnpt | grep -c 1443
0
root@vps1:/var/log# systemctl start [email protected]
root@vps1:/var/log# ss -lnpt | grep -c 1443
0
syslog
다음과 같은 내용이 있습니다.
Oct 11 09:32:03 vps1 systemd[1]: Started TLS tunnel for network daemons - per-config-file service.
Oct 11 09:32:03 vps1 stunnel: LOG5[ui]: stunnel 5.56 on x86_64-pc-linux-gnu platform
Oct 11 09:32:03 vps1 stunnel: LOG5[ui]: Compiled with OpenSSL 1.1.1k 25 Mar 2021
Oct 11 09:32:03 vps1 stunnel: LOG5[ui]: Running with OpenSSL 1.1.1w 11 Sep 2023
Oct 11 09:32:03 vps1 stunnel: LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6,SYSTEMD TLS:ENGINE,FIPS,OCSP,PSK,SNI Auth:LIBWRAP
Oct 11 09:32:03 vps1 stunnel: LOG5[ui]: Reading configuration from file /etc/stunnel/proxy-ssh.conf
Oct 11 09:32:03 vps1 stunnel: LOG5[ui]: UTF-8 byte order mark not detected
Oct 11 09:32:03 vps1 stunnel: LOG5[ui]: FIPS mode disabled
Oct 11 09:32:03 vps1 stunnel: LOG5[ui]: Configuration successful
Oct 11 09:32:03 vps1 stunnel: LOG5[ui]: Binding service [proxy-ssh] to :::1443: Address already in use (98)
Oct 11 09:33:33 vps1 systemd[1]: [email protected]: State 'stop-sigterm' timed out. Killing.
Oct 11 09:33:33 vps1 systemd[1]: [email protected]: Failed with result 'timeout'.
"정상적인 초기화 시퀀스" 후 실패가 선언되기 전까지 1.5분 정도 지연된다는 점에 유의하세요. 지연되는 동안 서비스는 일부 주를 거쳐 전환 중이었는데 우연히 이 상태를 발견했습니다: Active: deactivating (stop-sigterm) since Wed 2023-10-11 09:32:03 +04; 43s ago
. 마지막으로 실패 상태에 들어갑니다.
● [email protected] - TLS tunnel for network daemons - per-config-file service
Loaded: loaded (/lib/systemd/system/[email protected]; enabled; vendor preset: enabled)
Active: failed (Result: timeout) since Wed 2023-10-11 09:33:33 +04; 5min ago
Docs: man:stunnel4(8)
Process: 10546 ExecStart=/usr/bin/stunnel4 /etc/stunnel/proxy-ssh.conf (code=exited, status=0/SUCCESS)
Main PID: 10546 (code=exited, status=0/SUCCESS)
서비스 파일에는 멋진 것이 없습니다. 시작할 때 사용한 것과 동일한 명령입니다.
문제는 무엇이며 어떻게 해결합니까?
답변1
이제 포그라운드에서 실행되도록 stunnel을 구성해야 한다는 사실이 밝혀졌습니다.
foreground = yes
[proxy-ssh]
cert = /etc/ssl/private/le-vps1.merlin-vrn.tk-key+fullchain.pem
accept = 1443
connect = 22
그 후에는 서비스가 즉시 시작되고 예상대로 작동합니다.