Question Comment puis-je supprimer / etc / issue sans perdre les messages d'erreur?


Est-il possible de dire au client ssh de ne pas imprimer les connexions de /etc/issue stdout lors de la connexion à un hôte distant, mais pour imprimer tout autre message de diagnostic (par exemple, erreur)?

Soit en utilisant ssh -q ou ayant LogLevel quiet dans ~/.ssh/config supprime le /etc/issue l'impression, mais aussi désactiver les messages d'erreur. J'ai essayé touching ~/.hushlogin aussi - ça s'arrête /etc/motd en cours d'impression, mais n'affecte pas /etc/issue.

La solution la plus évidente consiste à supprimer /etc/issue, mais la politique de l’entreprise impose que le fichier soit accompagné d’avertissements sur l’accès non autorisé. Ceci est non négociable. Malheureusement, j'ai un tas de scripts qui fonctionnent sur plusieurs hôtes via ssh, et les fichiers journaux sont a) très grands et b) pleins de jargon juridique. Étant donné que beaucoup de choses sont exécutées sans surveillance, je ne souhaite pas perdre les messages d'erreur imprimés.


4
2017-12-17 14:52


origine


Ces legalses doivent être statiques. Je suggère une suppression automatique du journal en utilisant awk ou sed. Je vais venir avec une solution demain. - Archemar


Réponses:


Oui Ajouter un fichier ~/.ssh/config contenant:

LogLevel ERROR

OpenSSH affiche le contenu de /etc/issue à partir du serveur distant. Ce paramètre désactive cet affichage. Très utile lorsque la société Git repo à distance comme un avertissement de sécurité ennuyeux.

le ssh config page de manuel dit:

LogLevel

Donne le niveau de verbosité utilisé lors de la journalisation des messages   de ssh (1). Les valeurs possibles sont: QUIET, FATAL, ERROR,    INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, et DEBUG3.   La valeur par défaut est INFO. DEBUG et DEBUG1 sont équivalents.    DEBUG2 et DEBUG3 chacun spécifie des niveaux plus élevés de sortie détaillée.


Astuce supplémentaire Ajoutez aussi dans votre ~/.ssh/config

Host *
     StrictHostKeyChecking no

Cela empêche un autre message ennuyeux. Lors de la connexion à un nouvel hôte, la question de sécurité suivante bloque la connexion en cours. L'astuce ci-dessus suppose toujours yes. Néanmoins dans la pratique, vous répondez toujours yesn'est-ce pas?

The authenticity of host 'newhostname (11.222.33.44)' can't be established.
RSA key fingerprint is aa:bb:cc:dd:ee:ff:11:22:33:44:55:66:77:88:99:00.
Are you sure you want to continue connecting (yes/no)?

6
2017-12-08 16:39





Ni mon OS X localhost ni mon serveur Ubuntu n’impriment /etc/issue quand je ssh in (ni avec un shell ni avec l'exécution d'une commande à distance), donc je ne peux pas reproduire votre problème. Je vais essayer cela de mémoire.

Si cela ne vous dérange pas de faire deux connexions, vous pouvez le faire:

num_lines="$(ssh yourhost 'cat /etc/issue' | wc -l)";
ssh yourhost 'your real command here' | tail +$(($num_lines / 2 + 1));

La première commande ssh provoquera /etc/issue à imprimer deux fois (une fois par le système, une fois par cat), le nombre de lignes sera donc le double de celui de /etc/issue. La sortie de la seconde commande affichera uniquement la sortie de ce nombre de lignes plus une.


3
2018-02-21 15:03





Si votre journal a un tas de sessions ajoutées dans un fichier, vous pouvez faire votre script faire quelque chose comme echo START LOGGING avant d'exécuter d'autres commandes, puis echo END LOGGING avant de vous déconnecter, puis utilisez un script shell simple (en utilisant sed ou awk), supprimez tout le contenu du fichier entre END et START (c.-à-d. le code avant chaque connexion).

MODIFIER:

Maintenant, je vois que vous ne vous connectez pas, mais recherchez plutôt des messages dans la fenêtre - je recommande de créer des journaux et d'analyser les journaux au lieu d'utiliser uniquement la sortie de la fenêtre du terminal. si besoin.


3
2018-02-21 15:12





Non.

Lorsque l'hôte envoie des lignes de texte, comment le client SSH peut-il savoir quelles lignes proviennent de / etc / issue de l'hôte et lesquelles sont des messages plus intéressants? Ça ne peut pas.


0
2018-02-19 15:21



il peut savoir que / etc / issue est imprimé avant que vous exécutiez des commandes, il ne sera pas affiché au milieu d'une session, jamais - Justin Smith


Vous pouvez définir ceci depuis la ligne de commande avec:

ssh -o loglevel=ERROR

Si vous utilisez rsync (comme c'était le cas pour googler ce problème), vous pouvez le faire en spécifiant la ligne de commande de connexion ssh à rsync comme suit:

rsync -e 'ssh -o loglevel=ERROR'


0
2018-03-07 02:21