Option client SSH pour supprimer les bannières du serveur?

14

J'ai lu Stop ssh login from printing motd from the client? , mais ma situation est un peu différente:

  • Je veux garder la bannière / chemin / vers / quelque chose côté serveur
  • Je voudrais passer une option dans des conditions spécifiques pour que la bannière ne soit pas imprimée (par exemple ssh -o "PrintBanner=No" someserver).

Une idée?

Communauté
la source

Réponses:

-1

Tu ne peux pas. (Du moins pas avec le stock OpenSSH)

La bannière du serveur est envoyée par le serveur avant que l'authentification ne se produise. Son intérêt est généralement de contenir une clause de non-responsabilité légale ou un message similaire du type "Si vous n'êtes pas autorisé à vous déconnecter MAINTENANT", ou d'autres éléments critiques que vous ne voulez pas que l'utilisateur distant puisse supprimer / ignorer.

Si vous voulez vraiment vous en débarrasser, vous devrez pirater et compiler votre propre version personnalisée du client SSH.

voretaq7
la source
15
Ce sont des informations anciennes et ne sont plus vraies sur les distributions courantes. Les réponses ci-dessous à utiliser soit -qou -o LogLevel=errorfonctionnent très bien maintenant :-)
Dogsbody
28

Il y a une LogLeveloption:

Cela fait taire la bannière, mais vous pouvez toujours recevoir des erreurs:

$ ssh -o LogLevel=error localhost 
Permission denied (publickey).
user3640161
la source
Ne fonctionnait pas avec le client OpenSSH 6.9 - peut-être que les informations de version seraient utiles?
Zayne S Halsall
Fonctionne avec OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.3, OpenSSL 1.0.1f 6 janvier 2014
Kulbir Saini
6

Je l'ai testé, je pense que vous pouvez l'utiliser -qdans la commande ssh. Le paramètre -q était le mode silencieux . Il provoque la suppression de la plupart des messages d'avertissement et de diagnostic, par exemple

ssh -t '$node2' 'sudo cat xxx' |grep xxxxx" 2>/dev/null >/root/node2

ou

ssh -t -q '$node2' 'sudo cat xxxx' |grep xxx" >/root/node2

J'espère que cela peut aider les autres

gris13
la source
-q ne fonctionnait pas d'un client Fedora 22 à Centos 6 et Suse 2.6 (le client était OpenSSH 6.9. Peut-être que cette réponse serait surévaluée si elle faisait référence à une version ssh spécifique?
Zayne S Halsall
5

Mettre à jour ~ / .ssh / config avec ce qui suit pour supprimer la bannière

Host *
    LogLevel error
Sashi Kant
la source
Je pense que la ligne "Host *" est redondante ou incorrecte. En tout cas, j'obtiens l'effet désiré sans lui. Cependant, il convient de noter que OP voulait obtenir l'effet dans certaines conditions de programmation, auquel cas l'option de ligne de commande répertoriée ci-dessus est la meilleure solution.
UncaAlby
4

Vous devriez être en mesure de définir un autre Banner(à aucun) à l'intérieur d'un Matchbloc.

Par exemple:

Match Address 192.0.2.0/24
        Banner none

Mais cela doit être fait côté serveur , en fonction de conditions spécifiques. Vous ne pouvez pas le faire du côté client .

Michael Hampton
la source
4

On dirait que vous recherchez -q :

Mode silencieux. Supprime la plupart des messages d'avertissement et de diagnostic.

ssh user@host
*------------------------------------------------------------------------------*
| banner: blah                                                                 |
*------------------------------------------------------------------------------*
Last login: Mon Oct  2 16:40:01 2017 from ipAddress
$

Avec -q

ssh -q user@host
Last login: Mon Oct  2 16:40:30 2017 from ipAddress
$

Agréable et calme. La bannière est toujours configurée mais cela ne vous dérange pas.

Sur une autre note: n'utilisez pas de bannières. Il vaut mieux ne rien confirmer ou nier. Cela ne vous aidera pas avec les personnes qui ne vous inquiètent pas et les personnes qui vous inquiètent riront en passant devant.;-)

todd_dsm
la source
0

Pour moi, -o LogLevel=errorc'était mieux que-q , car ce dernier supprime les informations d'erreur importantes (que vous ne pouvez alors obtenir que via le code de sortie).

Comparez cela (sans options): [root@myserver804 myuser1]# ssh targetserver1; echo "exit code=$?" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the RSA key sent by the remote host is SHA256:hvtR8Dl09aUeCeG2cT5EA8b+nbCOoV6h1DUON2vE63w. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending RSA key in /root/.ssh/known_hosts:1735 RSA host key for targetserver1 has changed and you have requested strict checking. Host key verification failed. exit code=255

avec ça (calme) [root@myserver804 myuser1]# ssh -q targetserver1; echo "exit code=$?" exit code=255

avec cela (seulement les erreurs de journalisation) [root@myserver804 myuser1]# ssh -o LogLevel=error targetserver1; echo "exit code=$?" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the RSA key sent by the remote host is SHA256:hvtR8Dl09aUeCeG2cT5EA8b+nbCOoV6h1DUON2vE63w. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending RSA key in /root/.ssh/known_hosts:1735 RSA host key for targetserver1 has changed and you have requested strict checking. Host key verification failed. exit code=255

Donc, la conclusion est - si vous êtes toujours intéressé par des erreurs pertinentes, utilisez -o LogLevel=error

Pik Master
la source
0

Ni le -qni les -oLogLevel=errorœuvres.

Ce qui fonctionne est de supprimer STDERR

ssh hostname command 2>/dev/null

L'inconvénient, cependant, est que la suppression STDERR est appliquée à la commande entière et pas seulement au programme SSH.

Aethalides
la source
-2

Appelez simplement un shell, cela devrait supprimer la bannière.

ssh [email protected] /bin/bash

Notez cependant que, pour moi au moins, mon $ PS1 n'est pas défini, il semble donc qu'il soit suspendu. J'ai dû taper quelques commandes pour vérifier que cela fonctionnait.

chrskly
la source
1
Cela ne supprimera pas les bannières affichées par l' Banneroption dans /etc/sshd_config(du moins, ce n'est pas le cas sur FreeBSD / OpenSSH_5.8p2)
voretaq7
Ah, j'ai vu motd dans la question. Cela m'apprendra à lire correctement la description;)
chrskly
-2

Pour moi, -q a fait l'affaire et j'ai quand même pu travailler avec la sortie enregistrée dans un fichier.

ssh -q root @ server28 "ls -alF / dr_mksysb | egrep -v \" total | lost + found | ./ | ../ \ "| awk '{print \ $ NF}' | sed 's /.\$ // g '"> $ {basedir} /28.list

Zatarra
la source
Super que cela fonctionne pour vous. Néanmoins, cela ne répond pas à la question et devrait tout au plus être un commentaire.
Gerald Schneider
C'est le problème, cela répond à la question, je me suis débarrassé de motd (bannière) J'ai eu exactement le même problème que celui indiqué dans la question
Zatarra
La seule partie de votre réponse qui se rapporte à la question est le -qparamètre. Le reste est complètement indépendant et ne sert qu'à vous. Le paramètre a déjà été donné comme réponse, alors n'hésitez pas à le voter si cela vous a aidé, mais cette "réponse" ne recevra que des downvotes
Gerald Schneider