Я использую жемчужину net-sftp для загрузки файла на ftp-сервер. Вот мой код:Ruby Net :: Загрузка SFTP
require "net/sftp"
Net::SFTP.start(url, username, password: password) do |sftp|
sftp.upload!(file_path, "/")
end
Это просто висит на линии загрузки, и в конце концов таймаут с ошибкой Net::SSH::Disconnect: connection closed by remote host
. Я могу подключиться через SFTP с помощью FileZilla, используя тот же URL, имя пользователя и пароль.
Я попытался запустить версию без блока с verbose: :debug
, а также:
sftp = Net::SFTP.start(test.ftphost.com, ftp_username, password: ftp_password, verbose: :debug)
^это порождало вывод, который показывает, что соединение было хорошо:
I, [2015-04-29T10:32:51.381339 #25769] INFO -- net.ssh.connection.session[3fc8a502c24c]: channel_success: 0 D, [2015-04-29T10:32:51.381429 #25769] DEBUG -- net.sftp.session[3fc8a5025d70]: sftp subsystem successfully started
Тогда я вошел следующее:
sftp.upload!("/Users/marina/Desktop/test.png", "/")
Выход застрял следующим образом:
I, [2015-04-29T10:32:55.035471 #25769] INFO -- net.sftp.session[3fc8a5025d70]: sending open packet (0)
D, [2015-04-29T10:32:55.035740 #25769] DEBUG -- tcpsocket[3fc8a4cf464c]: queueing packet nr 12 type 94 len 44
D, [2015-04-29T10:32:55.036149 #25769] DEBUG -- tcpsocket[3fc8a4cf464c]: sent 68 bytes
D, [2015-04-29T10:32:55.119070 #25769] DEBUG -- tcpsocket[3fc8a4cf464c]: read 52 bytes
D, [2015-04-29T10:32:55.119356 #25769] DEBUG -- tcpsocket[3fc8a4cf464c]: received packet nr 11 type 96 len 28
I, [2015-04-29T10:32:55.119470 #25769] INFO -- net.ssh.connection.session[3fc8a502c24c]: channel_eof: 0
D, [2015-04-29T10:32:55.195747 #25769] DEBUG -- tcpsocket[3fc8a4cf464c]: read 120 bytes
D, [2015-04-29T10:32:55.196037 #25769] DEBUG -- tcpsocket[3fc8a4cf464c]: received packet nr 12 type 98 len 44
I, [2015-04-29T10:32:55.196176 #25769] INFO -- net.ssh.connection.session[3fc8a502c24c]: channel_request: 0 exit-status false
D, [2015-04-29T10:32:55.196445 #25769] DEBUG -- tcpsocket[3fc8a4cf464c]: received packet nr 13 type 97 len 28
I, [2015-04-29T10:32:55.196527 #25769] INFO -- net.ssh.connection.session[3fc8a502c24c]: channel_close: 0
D, [2015-04-29T10:32:55.196743 #25769] DEBUG -- tcpsocket[3fc8a4cf464c]: queueing packet nr 13 type 97 len 28
D, [2015-04-29T10:32:55.196806 #25769] DEBUG -- net.sftp.session[3fc8a5025d70]: sftp channel closed
D, [2015-04-29T10:32:55.197022 #25769] DEBUG -- tcpsocket[3fc8a4cf464c]: sent 52 bytes
Любые идеи?
Такие зависания обычно связаны с активным и пассивным режимами передачи, см. [Почему не может подключаться Net :: FTP к серверу?] (Http://stackoverflow.com/questions/15103830/why-cant-netftp- connect-to-server) –
@SteffenUllrich Я использую SFTP - не FTP (http://stackoverflow.com/a/5881966/858418) – Marina
Извините, что вы правы. –