GNU/Linux >> Tutoriels Linux >  >> Linux

Comment envoyer des données au presse-papiers local à partir d'une session SSH distante

Je ressuscite ce fil car je cherchais le même type de solution et j'en ai trouvé une qui fonctionne pour moi. Il s'agit d'une modification mineure d'une suggestion d'OSX Daily.

Dans mon cas, j'utilise Terminal sur ma machine OSX locale pour me connecter à un serveur Linux via SSH. Comme l'OP, je voulais pouvoir transférer de petits morceaux de texte du terminal vers mon presse-papiers local, en utilisant uniquement le clavier.

L'essence de la solution :

commandThatMakesOutput | ssh desktop pbcopy

Lorsqu'elle est exécutée dans une session ssh sur un ordinateur distant, cette commande prend la sortie de commandThatMakesOutput (par exemple ls, pwd) et redirige la sortie vers le presse-papiers de l'ordinateur local (le nom ou l'IP de "desktop"). En d'autres termes, il utilise ssh imbriqué :vous êtes connecté à l'ordinateur distant via une session ssh, vous y exécutez la commande, et l'ordinateur distant se connecte à votre bureau via une session ssh différente et place le texte dans votre presse-papiers.

Il nécessite que votre bureau soit configuré en tant que serveur ssh (ce que je vous laisse, ainsi qu'à google). C'est beaucoup plus facile si vous avez configuré des clés ssh pour faciliter une utilisation rapide de ssh, de préférence en utilisant une phrase secrète par session, ou tout ce que vos besoins de sécurité exigent.

Autres exemples :

ls  | ssh desktopIpAddress pbcopy
pwd |  ssh desktopIpAddress pbcopy

Pour plus de commodité, j'ai créé un fichier bash pour raccourcir le texte requis après le tube :

#!/bin/bash
ssh desktop pbcopy

Dans mon cas, j'utilise une clé spécialement nommée

Je l'ai enregistré avec le nom de fichier cb (mon mnémonique (ClipBoard). Placez le script quelque part sur votre chemin, rendez-le exécutable et le tour est joué :

ls | cb

Port de tunnel inversé sur le serveur ssh

Toutes les solutions existantes nécessitent soit :

  • X11 sur le client (si vous l'avez, xclip sur le serveur fonctionne très bien) ou
  • le client et le serveur doivent être sur le même réseau (ce qui n'est pas le cas si vous êtes au travail et essayez d'accéder à votre ordinateur personnel).

Voici une autre façon de procéder, bien que vous deviez modifier la façon dont vous vous connectez en ssh à votre ordinateur.

J'ai commencé à l'utiliser et c'est loin d'être aussi intimidant qu'il n'y paraît, alors essayez-le.

Client (démarrage de la session ssh)

ssh [email protected] -R 2000:localhost:2000

(indice :faites-en un raccourci clavier pour ne pas avoir à le taper)

Client (un autre onglet)

nc -l 2000 | pbcopy

Remarque :si vous n'avez pas pbcopy puis juste tee dans un fichier.

Serveur (dans la session SSH)

cat some_useful_content.txt | nc localhost 2000

Autres remarques

En fait, même si vous êtes au milieu d'une session ssh, il existe un moyen de démarrer un tunnel, mais je ne veux pas effrayer les gens de ce qui n'est vraiment pas aussi mauvais qu'il n'y paraît. Mais j'ajouterai les détails plus tard si je vois un intérêt


J'ai trouvé une excellente solution qui ne nécessite pas de connexion ssh inversée !

Vous pouvez utiliser xclip sur l'hôte distant, ainsi que le transfert ssh X11 et XQuartz sur le système OSX.

Pour le configurer :

  1. Installez XQuartz (je l'ai fait avec la recette soloist + pivotal_workstation::xquartz, mais vous n'êtes pas obligé)
  2. Exécuter XQuartz.app
  3. Ouvrir les préférences XQuartz ( +, )
  4. Assurez-vous d'"Activer la synchronisation" et "Mettre à jour le presse-papiers lorsque le presse-papiers change" sont vérifiés
  5. ssh -X remote-host "echo 'hello from remote-host' | xclip -selection clipboard"

Ma méthode préférée est ssh [remote-machine] "cat log.txt" | xclip -selection c . Ceci est particulièrement utile lorsque vous ne voulez pas (ou ne pouvez pas) utiliser ssh de distant à local.

Édit :sur Cygwin ssh [remote-machine] "cat log.txt" > /dev/clipboard .

Edit :Un commentaire utile de nbren12 :

Il est presque toujours possible de configurer une connexion ssh inversée à l'aide du transfert de port SSH. Ajoutez simplement RemoteForward 127.0.0.1:2222 127.0.0.1:22 à l'entrée du serveur dans votre .ssh/config local , puis exécutez ssh -p 2222 127.0.0.1 sur la machine distante, qui redirigera alors la connexion vers la machine locale. – nbren12


Linux
  1. Commande SCP Linux - Comment transférer un fichier SSH de distant à local

  2. Comment SSH sur Linux à partir d'Android

  3. Comment empêcher la session SSH d'être expirée

  4. Comment revenir à scp local alors que j'ai déjà sshed sur une machine distante?

  5. Comment puis-je me déconnecter d'une session SSH ouverte et distante ?

Comment se connecter à un poste de travail distant à partir de Linux

Comment SSH dans un répertoire particulier sous Linux

Comment télécharger des fichiers à partir de serveurs Linux distants

Comment effectuer une sauvegarde Linux à distance à l'aide de SSH

Comment utiliser SSH pour se connecter à un serveur distant

Comment :Administration à distance de FreeBSD