Connexion SFTP impossible

Bonjour à tous,
j’ai un serveur Web sous Debian 9.6.
Depuis ma station Fedora 30 je n’arrive pas à me connecter en SFTP via NetBeans. Je n’ai aucun souci en utilisant Filezilla (même host, login, password et port spécifique).

avec NetBeans :

root@debian:~# tail -50 /var/log/auth.log
Sep 13 11:14:18 debian sshd[29289]: rexec line 19: Deprecated option KeyRegenerationInterval
Sep 13 11:14:18 debian sshd[29289]: rexec line 20: Deprecated option ServerKeyBits
Sep 13 11:14:18 debian sshd[29289]: rexec line 31: Deprecated option RSAAuthentication
Sep 13 11:14:18 debian sshd[29289]: rexec line 38: Deprecated option RhostsRSAAuthentication
Sep 13 11:14:29 debian sshd[29289]: Did not receive identification string from 192.168.60.80 port 35672

avec Filezilla :

root@debian:~# tail -50 /var/log/auth.log
Sep 13 11:53:43 debian sshd[30779]: rexec line 19: Deprecated option KeyRegenerationInterval
Sep 13 11:53:43 debian sshd[30779]: rexec line 20: Deprecated option ServerKeyBits
Sep 13 11:53:43 debian sshd[30779]: rexec line 31: Deprecated option RSAAuthentication
Sep 13 11:53:43 debian sshd[30779]: rexec line 38: Deprecated option RhostsRSAAuthentication
Sep 13 11:53:44 debian sshd[30779]: reprocess config line 31: Deprecated option RSAAuthentication
Sep 13 11:53:44 debian sshd[30779]: reprocess config line 38: Deprecated option RhostsRSAAuthentication
Sep 13 11:53:44 debian sshd[30779]: Accepted password for monlogin from 192.168.60.80 port 35591 ssh2
Sep 13 11:53:44 debian sshd[30779]: pam_unix(sshd:session): session opened for user monlogin by (uid=0)

Le souci serait lié à “Did not receive identification string from”…
Auriez-vous des idées ?
Merci d’avance

J’ai les mêmes sur une de mes machines, et ça n’empêche pas de fonctionner, c’est du warnong.

Ca, c’est a priori juste signe que c’est lors de l’échange d’identification que ça se passe mal entre le client et le serveur, mais on en sait pas plus.
Pourrais tu essayer de faire manuellement ton sftp depuis ta fedora, et si le probléme de connexion apparaît bien, retenter le transfert sftp depuis le client avec un -v pour mieux voir ?
Sinon, je ne sais pas comment s’articule netbeans avec tout ça, mais si le sftp ligne de commande n’est pas possible pour diagnostiquer, il n’y aurait pas un mode plus verbeux, pour regarder la session sftp coté client ?

ça fonctionne sans souci en shell… :confused:
je cherche plus d’infos concernant : Did not receive identification string from

Quel est la compatibilité entre la version de Netbeans (Java ?) et les versions de TLS et les algos de chiffrement utilisés sur Debian 9 ?

comment savoir cela ?

Aucune idée. Il faut faire une ercherche et regarder les logs de connexion de Netbeans (s’il y en a).
Exemple de résultat sur un moteur de recherche :

en mode DEBUG3 coté serveur :

Sep 13 15:03:24 debian sshd[35464]: Received signal 15; terminating.
Sep 13 15:03:24 debian sshd[35908]: debug3: already daemonized
Sep 13 15:03:24 debian sshd[35908]: debug3: oom_adjust_setup
Sep 13 15:03:24 debian sshd[35908]: debug1: Set /proc/self/oom_score_adj from 0 to -1000
Sep 13 15:03:24 debian sshd[35908]: debug2: fd 3 setting O_NONBLOCK
Sep 13 15:03:24 debian sshd[35908]: debug1: Bind to port 56500 on 0.0.0.0.
Sep 13 15:03:24 debian sshd[35908]: Server listening on 0.0.0.0 port 56500.
Sep 13 15:03:24 debian sshd[35908]: debug2: fd 4 setting O_NONBLOCK
Sep 13 15:03:24 debian sshd[35908]: debug3: sock_set_v6only: set socket 4 IPV6_V6ONLY
Sep 13 15:03:24 debian sshd[35908]: debug1: Bind to port 56500 on ::.
Sep 13 15:03:24 debian sshd[35908]: Server listening on :: port 56500.
Sep 13 15:03:36 debian sshd[35908]: debug3: fd 5 is not O_NONBLOCK
Sep 13 15:03:36 debian sshd[35908]: debug1: Forked child 35910.
Sep 13 15:03:36 debian sshd[35908]: debug3: send_rexec_state: entering fd = 8 config len 1197
Sep 13 15:03:36 debian sshd[35908]: debug3: ssh_msg_send: type 0
Sep 13 15:03:36 debian sshd[35908]: debug3: send_rexec_state: done
Sep 13 15:03:36 debian sshd[35910]: debug3: oom_adjust_restore
Sep 13 15:03:36 debian sshd[35910]: debug1: Set /proc/self/oom_score_adj to 0
Sep 13 15:03:36 debian sshd1[35910]: debug1: rexec start in 5 out 5 newsock 5 pipe 7 sock 8
Sep 13 15:03:36 debian sshd[35910]: debug1: inetd sockets after dupping: 3, 3
Sep 13 15:03:36 debian sshd[35910]: Connection from 192.168.60.80 port 39040 on 10.3.1.26 port 56500
Sep 13 15:03:47 debian sshd[35910]: Did not receive identification string from 192.168.60.80 port 39040

Je parlais des logs du client NetBeans (ou au moins le message d’erreur affiché par NetBeans), sur le serveur cela ne dit pas grand chose si ce n’est que le client échoue à établir la connexion pour une raison inconnue.

Le lien que j’ai donné montre que des « machins » en Java utilisent de vieux algos non sécurisés qui ont été désactivés dans OpenSSH depuis longtemps. La solution est d’autoriser explicitement ces algos côté serveur (avec les risques de sécurité inhérents) ou d’utiliser des bibliothèques Java réputés pour fonctionner avec OpenSSH.

Message d’erreur dans une popup NetBeans après test du paramétrage :

Cannot connect to server 10.3.1.26 (Cause: Read timed out)

dans la fenêtre IDE Log :

INFO [org.netbeans.modules.php.project.connections.ftp.FtpClient]: Exception while connecting
java.net.SocketTimeoutException: Read timed out
	at java.base/java.net.SocketInputStream.socketRead0(Native Method)
	at java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:115)
	at java.base/java.net.SocketInputStream.read(SocketInputStream.java:168)
	at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140)
	at java.base/sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
	at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
	at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
	at java.base/java.io.InputStreamReader.read(InputStreamReader.java:185)
	at java.base/java.io.BufferedReader.fill(BufferedReader.java:161)
	at java.base/java.io.BufferedReader.read(BufferedReader.java:182)
	at org.apache.commons.net.io.CRLFLineReader.readLine(CRLFLineReader.java:58)
	at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:321)
	at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:300)
	at org.apache.commons.net.ftp.FTP._connectAction_(FTP.java:438)
	at org.apache.commons.net.ftp.FTPClient._connectAction_(FTPClient.java:962)
	at org.apache.commons.net.ftp.FTPClient._connectAction_(FTPClient.java:950)
	at org.apache.commons.net.ftp.FTPSClient._connectAction_(FTPSClient.java:222)
	at org.apache.commons.net.SocketClient._connect(SocketClient.java:244)
	at org.apache.commons.net.SocketClient.connect(SocketClient.java:202)
[catch] at org.netbeans.modules.php.project.connections.ftp.FtpClient.connect(FtpClient.java:178)
	at org.netbeans.modules.php.project.connections.RemoteClient.connect(RemoteClient.java:173)
	at org.netbeans.modules.php.project.connections.ui.RemoteConnectionsPanel.testConnection(RemoteConnectionsPanel.java:227)
	at org.netbeans.modules.php.project.connections.ui.RemoteConnectionsPanel$2.run(RemoteConnectionsPanel.java:128)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1418)
	at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:45)
	at org.openide.util.lookup.Lookups.executeWith(Lookups.java:278)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2033)

j’ai ajouté dans mon sshd_config :

KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1

MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-ripemd160-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,umac-128@openssh.com,hmac-md5,hmac-sha1,hmac-sha1-96,hmac-md5-96

malheureusement pas d’amélioration :sleepy:

Je vois FTPS, or tu dois faire du SFTP (ce qui n’est pas du tout la même chose). Vérifie bien la configuration de ton client Netbeans : en SFTP sur le port 22 (à moins que tu n’aies modifié le port standard).

bien vu mais j’ai bien “Explicit FTP using TLS” dans la fenêtre Manage Remote Connections

et effectivement j’utilise un port non standard

en tout cas… merci pour ton aide !

Justement ce n’est pas le bon réglage là tu fait du « FTP over TLS » alors que tu devrais faire du SFTP (Secure File Transfer Protocol)

1 J'aime

ah ok :sweat_smile:

Le problème s’est que je n’ai que en liste déroulante “Encryption” :
-Pure FTP
-Explicit FTP using TLS
-Implicit FTP using TLS

En fenêtre précédente j’ai bien sélectionné : Remote Web Site (FTP, SFTP)

https://netbeans.apache.org/kb/docs/php/remote-hosting-and-ftp-account.html#specifyFTPConnectionSettings

Bon j’ai trouvé… honte à moi :sweat:
Je me suis obstiné sur un profil déjà existant au lieu d’en recréer un nouveau… et là miracle l’IDE de NetBeans me propose FTP ou SFTP (avec une fenêtre suivante légèrement différente)

Merci Bruno1 et bon WE ! :wink: