SFTP в удаленное место без пары пароль / ключ

Мы пытаемся предоставить SFTP-адаптер в среде на основе Spring для передачи файлов с локального на локальный или удаленный сервер, но у нас нет пароля, настроенного для удаленных пользователей. Все реализации, такие как apache-commons VFS или Jsch, требуют паролей или пар закрытых ключей для передачи файлов. Сейчас мы не можем настроить пароль для пользователей, так как для этого потребуется несколько изменений в других API, из которых мы получаем информацию о пользователях.

Как вы предлагаете решить эту проблему?


person javaShilp    schedule 14.05.2014    source источник
comment
Похоже, ваш файловый сервер использует FTP с анонимным доступом. SFTP - это «безопасный» протокол передачи файлов, поэтому он должен быть безопасным. Вы настраиваете свою службу SFTP на том же сервере, а другие ваши приложения по-прежнему могут использовать свой FTP-доступ. Эта пара ключей потребуется только для систем, подключающихся через SFTP.   -  person Damienknight    schedule 19.05.2014


Ответы (2)


Вы можете использовать SFTP / SSH без пароля в автоматических целях. 2 способа на ваш выбор.

1 - Создайте пару ключей, в которой секретный ключ имеет пустой пароль. Используйте ssh-keygen:

$ ssh-keygen -f myInsecureKey

когда он запрашивает секретную фразу-пароль (пароль) секретного (закрытого) ключа, просто нажмите return. Затем возьмите открытый ключ (myInsecureKey.pub) и отправьте его на сервер в каталог .ssh в домашнем каталоге удаленной учетной записи. Назовите его «authorized_keys», если он уже существует, добавьте свой новый ключ (используйте редактор, чтобы увидеть, что вы делаете). Однако помните, что ваш секретный ключ теперь полностью открыт, поэтому вам следует настроить разрешения или что-то еще для его защиты.

2 - Используйте «агента» с обычной парой ключей SSH. Это немного сложно, но как только вы начнете, это круто и отлично подходит для интерактивного использования. В unix / mac команда ssh-agent запускает персональный сервер секретных ключей на вашем клиентском компьютере. Он запускает некоторые команды оболочки, которые вам нужны. Нравится:

$ ssh-агент> ~ / .ssh / .myAgentContactInfo

$ источник ~ / .ssh / .myAgentContactInfo

Каждая оболочка должна сделать последний шаг для использования агента; поместите его в свой .profile, чтобы новые окна оболочки, которые вы открывали, можно было использовать. Думаю, каждому пользователю нужен свой агент.

Затем вы загружаете его с любыми секретными ключами: $ ssh-add mySecretKey На этом шаге потребуется ваш пароль с ключом sec, но после этого вы не будете иметь пароля.

Оба эти метода работают с ssh и sftp и, возможно, работают с библиотеками ssh (я никогда их не пробовал).

person OsamaBinLogin    schedule 15.05.2014

Я не понимаю, как можно использовать SFTP без аутентификации с помощью логина и пароля. Однако у пользователя может быть пустой пароль.

С JSch вы можете использовать StrictHostKeyChecking:

final int PORT = 22;
// Server belongs to the model
Server server = new Server("root", "password");
JSch client = new JSch();
Session session = client.getSession(server.getLogin(), server.getAddress(), PORT);
// This is the important line!
session.setConfig("StrictHostKeyChecking", "no");
session.setPassword(server.getPassword());
person Maxbester    schedule 15.05.2014