Logowanie do konsoli SSH działa, ale SFTP nie, dlaczego?

17

Próbuję SFTP z Filezillą, ale nie jest w stanie połączyć się z serwerem i myślę, że jest to spowodowane moimi regułami zapory?

Mogę SSH absolutnie dobrze. Port SSH to 6128. Czy ktoś może mi powiedzieć, jakie zmiany musiałbym wprowadzić, aby zezwolić na połączenie FTP przez SSH, biorąc pod uwagę, że SSH już działa?

(Oto moje zasady IPtables)

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-ssh  tcp  --  anywhere             anywhere             multiport dports ssh
ACCEPT     all  --  anywhere             anywhere
REJECT     all  --  anywhere             loopback/8           reject-with icmp-port-unreachable
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     udp  --  anywhere             anywhere             udp dpt:9987
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:10011
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:30033
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:6128
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request
LOG        all  --  anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
DROP       all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

Chain fail2ban-ssh (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere
dziesięć razy
źródło
Odpowiedź Filezilli brzmi: „Odłączono: brak dostępnych obsługiwanych metod uwierzytelniania (serwer wysłany: publickey)”. Ale używam tego samego klucza, który działa na moim logowaniu do konsoli SSH (PuTTy w Windows btw)
tentimes
2
SFTP NIE jest FTP przez SSH. Nigdzie nie musisz „zezwalać na FTP”. Fakt, że Filezilla mówi „Brak dostępnych obsługiwanych metod uwierzytelniania” oznacza, że ​​jest dobrze podłączony do serwera, a problem nie ma nic wspólnego z zaporą. Jak skonfigurowałeś Filezilla do używania twojego klucza publicznego?
Circus Cat
Cześć i witamy w systemach Unix i Linux. Robi się mylące, ponieważ SFTP dzieli składnik swojej nazwy z protokołem FTP, ale poza tym nie mają one ze sobą nic wspólnego. SSH jest pojedynczym protokołem działającym na porcie 22 i zapewnia możliwości bezpiecznego łączenia się w postaci interaktywnej powłoki lub przesyłania plików przez to samo połączenie. Serwer SSH po stronie zdalnej musi zezwalać na połączenia SFTP, dlatego zajrzę do dzienników serwera SSH, aby uzyskać informacje o tym, dlaczego zawodzi, oprócz upewnienia się, że Filezilla ma odpowiedni klucz do bezpiecznego połączenia z serwerem.
slm
Przyjrzałbym się również i sprawdzeniu, czy SFTP jest poprawnie skonfigurowany z samego serwera, tak, możesz użyć sftpnarzędzia wiersza poleceń na serwerze, aby się połączyć, co jest pomocne w sprawdzaniu rzeczy przed wprowadzeniem Filezilli do miksu. digitalocean.com/community/tutorials/… .
slm

Odpowiedzi:

10

Aby uzyskać dostęp do sftp z innych hostów, upewnij się, że poniższe są poprawnie zainstalowane i skonfigurowane.

  • Zainstalowane serwery OpenSSH
  • Skonfigurowany sshd_config
    • Pubkey Uwierzytelnienie tak
    • Podsystem sftp internal-sftp
  • Dodano swój klucz publiczny do ~ / .ssh / author_keys

  • Uruchom serwer ssh z otwartym portem 22 / TCP # /etc/init.d/sshd start

  • # iptables -I INPUT -j ACCEPT -p tcp --dport 22

Na koniec przetestuj $ sftp <login>@<hostname>

OMG-1
źródło
Innym dobrym pomysłem jest sprawdzenie interaktywnej sesji za pomocą [[$ -! = I ]] i& return.
OMG-1
1
Subsystem sftp internal-sftpzrobił to dla mnie. /usr/libexec/openssh/sftp-serverDomyślnie ustawiony , który nawet nie istniał
quietContest
Dodanie Subsystem sftp internal-sftpdo sshd_config również działało dla mnie bez żadnych innych zmian w Centos.
Corgalore,
2

W moim przypadku użytkownik miał zshna górze swojego pliku .bashrc, aby mógł wpaść do powłoki zsh zamiast bash.

bash był jego domyślną powłoką. Usunięcie tego rozwiązało problem. I wtedy, chsh user -s /bin/zshaby użytkownik zachował zsh jako domyślną powłokę.

Shubham Chaudhary
źródło
Ten sam problem z innymi powłokami (takimi jak fish).
Paul,
1

Czy masz jakiś tekst przechodzący do konsoli (np. Instrukcje echa) w dowolnym pliku .profile, takim jak .bashrc? Może to zepsuć łączność sftp. Zobacz moją odpowiedź na podobne pytanie dotyczące błędu serwera

Paulus
źródło
Bądź z tym ostrożny. Jeśli automatycznie uruchomisz inną konsolę, taką jak fishta, spowoduje to podobne problemy.
Paul,
1

Może to również powodować oprogramowanie antywirusowe. Mieliśmy ostatnio do czynienia z tym. sshprzez PuTTY działało dobrze, ale WinSCP nie mógł się połączyć. Rozpoczął pracę po skonfigurowaniu wyjątku w programie antywirusowym.

Sibil
źródło
0

Jeśli używasz filezilla, następująca odpowiedź pomogła mi:

https://www.digitalocean.com/community/questions/able-to-access-via-ssh-but-not-filezilla

W Filezilla wybierz z menu Edycja-> Ustawienia, w lewym panelu rozwiń do Połączenie-> SFTP. Po prawej stronie upewnij się, że masz poprawny plik klucza prywatnego lub dodaj, jeśli brakuje poprawnego wpisu.

Korzystając z konsoli internetowej DO, zaloguj się jako root i zrób „tail -f /var/log/auth.log”. Następnie spróbuj się zalogować za pomocą Filezilli i zanotuj wszelkie wiadomości.

Ulad Kasach
źródło
0

Moja odpowiedź na podobne pytanie dotyczące błędu serwera :

Właśnie natknąłem się na ten problem (szczególnie dla sftp, ale nie ssh, gdzie mogłem połączyć się bez problemu) i żadne z rozwiązań tutaj nie działało. W moim przypadku było to spowodowane posiadaniem zbyt wielu kluczy ssh (IdentityFile's) w ~/.ssh/. Wygląda na to, że gdy nie masz wpisu ~/.ssh/confighosta, z którym próbujesz się połączyć za pomocą odpowiedniego klucza, wysyła on wszystkie klucze jeden po drugim. Miałem więcej niż 6 kluczy i oczywiście domyślnieMaxAuthTries jest to 6 (przynajmniej w Ubuntu).

Rozwiązaniem była edycja serwera /etc/ssh/sshd_configi zwiększenie MaxAuthTries. Ustawiłem mój na 10.

#MaxAuthTries 6
MaxAuthTries 10

(Lub, oczywiście, po prostu dodaj wpis hosta z odpowiednim kluczem - w tym konkretnym przypadku próbuję zalogować się bez użycia klucza).

szaleństwo
źródło