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 :
- Installez XQuartz (je l'ai fait avec la recette soloist + pivotal_workstation::xquartz, mais vous n'êtes pas obligé)
- Exécuter XQuartz.app
- Ouvrir les préférences XQuartz ( +
,
) - Assurez-vous d'"Activer la synchronisation" et "Mettre à jour le presse-papiers lorsque le presse-papiers change" sont vérifiés
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écutezssh -p 2222 127.0.0.1
sur la machine distante, qui redirigera alors la connexion vers la machine locale. – nbren12