Voici mon cas d'utilisation:
- Je suis souvent connecté à d'autres ordinateurs via SSH pour le travail et j'ai souvent besoin de copier et coller des documents / du texte du serveur vers des éditeurs locaux pour l'écriture d'exemples et le partage de texte.
- Souvent, si le texte est assez petit, je vais simplement copier le résultat de mon programme terminal (gnome-terminal pour le moment) et le coller.
- Cependant, quand il s’agit de documents entiers, mes options sont assez limitées. Je peux soit copier le document morceau par morceau, soit le copier sur l'ordinateur
scp
local.
Existe-t-il un moyen d'utiliser un programme tel que celui xclip
qui me permet de copier à distance stdin
dans le presse-papiers du serveur X local? Quelque chose à l'effet de:
cat myconffile.conf | sed {...} | copy-over-ssh-to-local-clipboard
ce serait génial. Existe-t-il quelque chose pour rendre cela possible?
Vous n'avez besoin de rien de spécial. depuis
xclip
fonctionne plusstdin
, justePourquoi aurait-il besoin d'être modifié avec
sed
?ssh
est transparent aux données lorsqu'il n'est pas utilisé en tant que terminal, et est couramment utilisé dans les pipelines tels quela source
stdin
avant de le copier dans le presse-papiers, j'aimerais cette option.ssh
session existante (ce ne serait pas très sécurisé si vous le pouviez). Vous pouvez configurer de manièressh
ControlMaster
à multiplexer des connexions supplémentaires sur une connexion existante, mais ce n'est pas vraiment quelque chose pour les débutants et vous le faites toujours de la même manière par la suite, en basculant sur un autre terminal local et en exécutant la commande ci-dessus (ce qui n'ouvre pas une nouvelle connexion). fenêtre de terminal).Voici comment vous le feriez sur OSX à partir de votre ordinateur local
la source
si votre ordinateur local exécute Windows (7+), vous pouvez simplement l'utiliser à partir de la ligne de commande:
la source
~ / .ssh / config:
/ etc / ssh / sshd_config:
frapper:
la source
Très similaire aux solutions @ d-raev et @ william-casarin, cependant, c'est différent, je partage donc ce qui a fonctionné pour moi.
La commande
Explication
Cela utilise
ssh
pour créer un tunnel sécurisé, connectez - vous àuser
@host
ouip
, puis exécutezcat
pour imprimer le contenu de<myconffile.conf
lastdout
puis tuyauterie à la commandexclip -sel clip
sur votre machine locale, qui place le contenu<myconffile.conf
dans le presse - papiers sur votre machine locale.Exemple d'utilisation dans le monde réel
J'utilise cette structure de commande pour des tâches telles que coller des clés ssh dans github (permettant une simple sélection de ctrl-V ou coller après avoir exécuté la commande) avec Bash sous Ubuntu 16.04 et 18.04. Consultez
man ssh
,man cat
etman xclip
pour plus de détails sur le comportement et les options.la source
xclip
ne fonctionnera pas car il n’ya pas de X.J'ai un problème similaire avec le
lxterminal
collage du presse-papiers dans unessh
session de LUbuntu (différents terminaux testés) . Si le Presse-papiers a plus d’environ 100 octets, le délai de la session expire et échoue.Si je me connecte via ssh à presque tous les serveurs CentOS 5.x, puis que je me connecte au serveur cible, le collage dans le presse-papiers fonctionne sans problème pour une taille de données raisonnable.
la source
Copier d'un serveur sans tête vers le Presse-papiers local, depuis votre session SSH habituelle:
Installez
ncat
sur votre machine locale et distante. (Sur votre machine distante, vous pouvez aussi faire avecnc
ou en clairtelnet
, mais sur la machine locale, nous avons besoin des options pour exécuter des commandes (-c
/-e
) qui ne sont pas disponiblesnc
dans les distributions habituelles comme Debian et Ubuntu.)Sur votre ordinateur local, configurez un serveur d'écoute sur l'interface locale qui copiera le contenu entrant sur le port 10009 dans votre presse-papiers X:
Ou utilisez la version abrégée équivalente:
SSH sur la machine distante de sorte qu’un tunnel inverse soit établi entre le port 10008 de la machine distante et le port 10009 sur votre machine locale (sur laquelle votre serveur est à l’écoute). Vous pouvez utiliser cette session SSH pour votre travail normal.
Lorsque vous souhaitez copier le contenu d'un fichier d'une machine distante dans le presse-papier local, exécutez-le dans le shell SSH:
Et bien sûr, c’est plus agréable quand il est présenté sous forme de raccourci ou de script. Nous pourrions l'appeler
rclip
pour "[copier dans] le presse-papier distant" par analogie avec le bien connuxclip
.Avantages
Pas besoin d'ouvrir une autre session SSH sur la machine distante.
Pas besoin de
xclip
sur la machine distante, donc ça marche si vous ne pouvez pas l'installer ou ne pouvez pas l'utiliser car c'est un serveur sans tête sans X.Sécurité
Nous faisons
ncat -l localhost 10009
pour le serveur, ce qui signifie qu'il écoute uniquement sur l'interface réseau avec l'localhost
adresse IP. Cette interface de boucle locale n'autorise que les connexions à partir de votre propre machine (y compris, dans ce cas, celles inversées par tunnel via SSH). Ainsi, même si vous n'êtes pas derrière un pare-feu, votre port 10009 n'est exposé à personne sur Internet.La source
Adapté de gist dergachev / ssh-forward-clipboard.md pour fonctionner sous Linux. Cet élément contient également des instructions sur la manière de rendre le tunnel inverse SSH par défaut.
la source
https://secure.wikimedia.org/wikipedia/en/wiki/Base64
Vous pouvez convertir vos données du Presse-papiers avec Base64 en texte ASCII. Ensuite, vous pouvez insérer cela dans une connexion SSH déjà existante.
la source