sftp: 포트 22를 통해 proftpd 서버에 액세스할 수 없습니다.

sftp: 포트 22를 통해 proftpd 서버에 액세스할 수 없습니다.

이전 서버가 설치 중에 암호화되어 키가 손실되었기 때문에 proftp 서버를 교체하려고 합니다. 이전 서버는 ftp:21 및 sftp:22/322에서 제대로 작동했습니다. 이전 서버는 ubuntu 16.04.7에 있었고 새 서버는 ubuntu 22.04.3에 있었습니다. 새 서버에 proftpd를 설치하고 Ubuntu 설치 중에 openssh를 설치했습니다.

목표는 새 서버를 이전 서버와 동일하게 만드는 것입니다. 따라서 기존 서버에서는 기본 SSH 포트가 22에서 322로 변경되었으며, proftpd는 포트 21(기본값)과 포트 22(/etc/profptd/conf.d/sftp.conf 파일에 지정됨)에서 접속할 수 있습니다. ).

새 서버의 /etc/profptd/conf.d/sftp.conf에 있는 sftp.conf 파일에서 proftpd에 대해 포트 22를 활성화합니다.

/etc/profptd/conf.d/의 sftp.conf 파일

따라서 포트 322를 통해 이전 서버와 새 서버에 SSH로 접속하고 포트 21을 통해 두 서버 모두에 액세스할 수 있습니다.

또한 ftp 클라이언트(WinSCP)를 사용하여 sftp:322를 두 서버 모두에 보낼 수 있고 ftp:21을 사용하여 두 서버 모두에 보낼 수 있습니다.

이제 문제는 ftp 클라이언트를 사용하여 포트 22의 새 서버에 연결할 수 없으며 다음 오류가 발생한다는 것입니다. SFTP 연결이 거부되었습니다 이 작업은 이전 서버에서 수행할 수 있으며 문서에 명시된 것과 동일한 sftp 구성을 갖습니다. profptd 문서의 구성 예

새 서버에서는 다음 설정이 활성화됩니다: /etc/ssh/sshd_config.d *

Port 322
#Port 22
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

PubKeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
HostbasedAuthentication no
IgnoreUserKnownhosts no

PasswordAuthentication yes
KbdInterctiveAuthentication no

UsePAM yes
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

새 서버에서 다음 설정을 활성화했습니다: /etc/proftpd/proftpd.conf

*

Include /etc/proftpd/modules.conf
UseIPv6 on

<IfModule mod_ident.c>
 IdentLookups off
</IfModule>

DefaultRoot ~

Port 21

AuthOrder mod_auth_pam.c* mod_auth_unix.c

<IfModule mod_quotab.c>
QuotaEngine off
</IfModule>

<IfModule mod_ratio.c>
Ratios off
</IfModule>

<IfModule mod_delay.c>
DelayEngine on
</IfModule>

<IfModule mod_ctrls.c>
...
</IfModule>

<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>

RequireValidShell off

Include /etc/proftpd/conf.d/

http://www.proftpd.org/docs/contrib/mod_sftp.html#SFTPHostKey

방화벽 ufw에서 포트 21, 22, 322를 활성화했습니다.

서버에 ssh:322를 연결할 수 있고, sftp:322와 ftp:21도 할 수 있지만, sftp:22도 할 수 있지만, 322와 22에서 sftp를 사용하면 이전 서버에 완벽하게 액세스할 수 있습니다.

답변1

이렇게 정리되었습니다.

해결책은 sftp 모듈(mod_sftp.c)이 기본적으로 활성화되어 있지 않다는 것입니다. 이러한 모듈은 /etc/proftpd/modules.conf에서 찾을 수 있습니다. mod_sftp 섹션의 주석 처리를 제거하세요.

SFTP 모듈

그래서 proftpd-mod-crypto, proftpd-mod-ldap 및 proftpd-mod-wrap을 설치했습니다.

관련 정보