Логін консолі SSH працює, але SFTP не робить, чому?


17

Я намагаюся SFTP з Filezilla, але він не в змозі підключитися до сервера, і я думаю, це пов'язано з моїми правилами брандмауера?

Я можу SSH абсолютно добре. Порт для SSH становить 6128. Чи може хто-небудь сказати мені, які зміни я повинен би внести, щоб дозволити FTP-з'єднання через SSH, враховуючи, що SSH вже працює?

(Ось мої правила 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

Відповідь від Filezilla така: "Відключено: Немає підтримуваних методів аутентифікації (сервер надісланий: publickey)" Але я використовую той самий ключ, який працює для мого входу в консоль SSH (PuTTy на windows btw)
понеділок

2
SFTP НЕ FTP через SSH. Вам не потрібно «дозволити FTP» ніде. Той факт, що Filezilla каже: "Немає доступних підтримуваних методів аутентифікації" вказує на те, що він підключений до сервера добре, і проблема не має нічого спільного з вашим брандмауером. Як ви налаштували Filezilla використовувати ваш відкритий ключ?
Цирковий кіт

Привіт, Ласкаво просимо до Unix & Linux. Це стає заплутаним, б / с SFTP поділяє компонент свого імені з протоколом FTP, але крім цього вони не мають нічого спільного один з одним. SSH - це єдиний протокол, який працює на порту 22, і він забезпечує можливість безпечного підключення у вигляді інтерактивної оболонки або для передачі файлів через те саме з'єднання. Сервер SSH на віддаленій стороні повинен забезпечувати з'єднання SFTP, тому я заглянув у журнали сервера SSH, щоб дізнатися, чому він не працює, крім того щоб переконатися, що Filezilla має відповідний ключ для безпечного підключення до сервера.
slm

Я також поглянув і перевіряю, чи SFTP налаштований належним чином із самого сервера, так, ви можете використовувати інструмент командного рядка sftpна сервері для підключення, що корисно для перевірки речей перед тим, як ввести Filezilla в суміш. digitalocean.com/community/tutorials/… .
slm

Відповіді:


10

Щоб отримати доступ до свого sftp від інших хостів, переконайтесь, що наступне встановлено та налаштовано належним чином.

  • Встановлені сервери OpenSSH
  • Налаштовано sshd_config
    • PubkeyAuthentication так
    • Підсистема sftp Internal-sftp
  • Додано ваш відкритий ключ до ~ / .ssh / autorizirane_keys

  • Запустіть ssh-сервер з відкритим портом 22 / TCP # /etc/init.d/sshd start

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

Нарешті, тест $ sftp <login>@<hostname>


Ще одна гарна ідея - перевірити наявність інтерактивного сеансу за допомогою [[$ -! = I ]] && return.
OMG-1,

1
Subsystem sftp internal-sftpзробив це для мене. Він був встановлений /usr/libexec/openssh/sftp-serverза замовчуванням, якого навіть не існувало
silentContest

Додавання Subsystem sftp internal-sftpдо sshd_config також працювало для мене без інших змін у Centos.
Коргалоре

2

У моєму випадку користувач мав zshу верхній частині свого файлу .bashrc, щоб він міг потрапити в zsh shell замість bash.

Баш була його оболонкою за замовчуванням. Видалення цього рішення вирішило проблему. Я тоді chsh user -s /bin/zshдля користувача зберігає zsh як його оболонку за замовчуванням.


Така ж проблема з іншими оболонками (такими як fish).
Пол

1

Чи є у вас будь-який текст, що йде до консолі (наприклад, повідомлення ехо) у будь-якому з ваших файлів .profile, наприклад .bashrc? Це може зіпсуватися із з'єднанням sftp. Дивіться мою відповідь на подібне запитання на сервері за замовчуванням


Будьте обережні з цим дійсно. Якщо ви автоматично запустите іншу консоль, наприклад, fishце призведе до подібних проблем.
Пол

1

Це може спричинити і ваше антивірусне програмне забезпечення. Ми стикалися з цим нещодавно. sshчерез PuTTY працював чудово, але WinSCP не зміг підключитися. Почав працювати, коли виключення було налаштовано в Антивірусі.


0

Якщо ви використовуєте filezilla, мені допомогла наступна відповідь:

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

У Filezilla виберіть у меню Правка-> Налаштування, На лівій панелі розгорніть пункт З'єднання-> SFTP. Праворуч переконайтеся, що у вас є правильний файл приватного ключа, або додайте, якщо його немає.

Використовуючи веб-консоль DO, увійдіть у систему як корінь та виконайте 'tail -f /var/log/auth.log'. Потім спробуйте увійти у файл Filezilla і відзначити будь-які повідомлення.


0

Моя відповідь на аналогічне запитання на сервері :

Я просто натрапив на цю проблему (спеціально для sftp, але не для ssh, де я міг би підключитися без проблем), і жодне з рішень тут не працювало для мене. У моєму випадку це було пов’язано з тим, що в ньому занадто багато ключів ssh (IdentityFile) ~/.ssh/. Схоже, що у вас немає запису хоста ~/.ssh/configдля хоста, до якого ви намагаєтесь з'єднатися правою клавішею, він просто надсилає всі ваші ключі по черзі. У мене було більше 6 клавіш, і, безумовно, за замовчуванням MaxAuthTries- 6 (принаймні, в Ubuntu).

Рішення полягало в редагуванні /etc/ssh/sshd_configта збільшенні сервера MaxAuthTries. Я встановив свій 10.

#MaxAuthTries 6
MaxAuthTries 10

(Або, звичайно, просто додати хост-запис за допомогою правої клавіші - у цьому конкретному випадку я намагаюся увійти без використання ключа).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.