Giriş SSH üzerinden panoya kopyalansın mı?


33

İşte kullanım durumum:

  • Genellikle iş için SSH üzerinden diğer bilgisayarlara bağlıyım ve genellikle örnekler yazmak ve metin paylaşmak için belgeleri / metni sunucudan yerel olarak çalışan editörlere kopyalayıp yapıştırmam gerekiyor.
  • Genellikle, eğer metin yeterince küçükse, çıktıyı terminal programımdan (şu anda gnome-terminali) kopyalayıp yapıştıracağım.
  • Ancak, tüm belgelere gelince, seçeneklerim oldukça sınırlı. Belgeyi öbek ya scpda yerel makineye kopyalayabilirim .

Yerel X sunucusunun panosuna xclipuzaktan kopyalamama izin verecek bir programı kullanmanın bir yolu var mı stdin? Etkisi için bir şey:

cat myconffile.conf | sed {...} | copy-over-ssh-to-local-clipboard

harika olurdu. Bunu mümkün kılacak bir şey var mı?

Yanıtlar:


20

X yönlendirme ile ssh çalıştırıyorsanız, bu şeffaftır: uzak komutların (dahil xclip) X sunucunuza (klavyesi dahil ) erişimi vardır. Elinizde olduğundan emin olun ForwardX11 yesGözlerinde farklı ~/.ssh/configve X11Forwarding yessunucudaki sshd_config(sizin dağılımları bağlı olarak bu seçenekler varsayılan olarak açık ya da kapalı olabilir).

<myconffile.conf sed {...} | xclip -i

Uzak dosyalar üzerinde daha kolay çalışmanın başka yolları da vardır; örneğin, yerel makinenize SSHfs ile uzak dizinleri yerleştirme veya uzak dosyaları Tramp ile Emacs'ta açma . Eğer ssh ve FUSE kurulumunuz varsa ve SSHfs kuruluysa, SSHfs kadar kolaydır mkdir ~/net/myserver; sshfs myserver:/ ~/net/myserver. Eğer ssh kurduysanız ve Emacs kurulu ise, Tramp açmak kadar kolaydır /myserver:/path/to/file.


1
Conf dosyasında işleri bu şekilde çalıştırmaya yönelik güvenlik açıkları var mı?
Naftuli Kay

Hayır. Tüm x11 trafiği SSH kanalı üzerinden iletilir.
Shadur

2
@TKKocheran Gerçekten değil. Sunucu tarafında, hiçbiri. İstemci tarafında, biraz, sunucu yöneticisine istemcinize bir yol verir, ancak vakaların% 99'unda sunucu yöneticisinin yine de bir yolu vardır; bkz. Birisi bilgisayarımda SSH ile oturum açtıysa bilgisayarlarına erişebilir miyim?
Gilles 'SO- kötülük yapmayı bırak'

7

Özel bir şeye ihtiyacınız yok; xclipişe yaradığından beri stdin, sadece

ssh remotehost xclip < myconf.conf

Neden ile değiştirilmesi gerekiyor sed? sshterminal olarak kullanılmadığında verilere karşı saydamdır ve genel olarak aşağıdaki gibi

tar cfz - somedir | ssh remotehost 'cd destdir; tar xfz -'`

Bunu var olan SSH oturumundan yapmanın bir yolu var mı? Zaten söz konusu makineye açık bir tane varsa, başka bir terminal penceresi açmamayı tercih ederim.
Naftuli Kay

Ve sed` orada bir örnek stdinolarak, panoya kopyalamadan önce herhangi bir işlem yapmak istersem, bu seçeneği istiyorum.
Naftuli Kay,

Hayır, mevcut bir sshoturuma veri enjekte etmenin yolu yok (eğer yapabilseydiniz çok güvenli olmazdı). Sen ayarlayabilirsiniz ssh ControlMastervarolan birinin üzerine multipleks ek bağlantılara şeyler, ama gerçekten yeni başlayanlar için bir şey değildir ve yine başka bir yerel terminali geçiş ve yok olan (yukarıda komutunu çalıştırarak, daha sonra bunu aynı şekilde yapmak değil yeni açmak terminal penceresi).
geekosaur

@NaftuliKay Normal SSH oturumunuzda çalışan bir çözüm için cevabımı görün .
tanius

5

Yerel makinenizden nasıl OSX’te yapacağınız

ssh remotehost.com "<some/file.txt" | pbcopy

3

Yerel makinenizde pencereler çalışıyorsa (7+) CommandLine'dan bunu kullanabilirsiniz:

ssh user@server cat /home/user/file | clip

1

~ / .Ssh / yapılandırma:

Host REMOTEHOST
    ...
    ForwardX11 yes

/ Etc / SSH / sshd_config:

X11Forwarding yes

bash:

$ xclip -o | ssh REMOTEHOST 'DISPLAY=:0 xclip -i'

1

@ D-raev'in ve @ william-casarin çözümlerine çok benzer, ancak bu farklı, bu yüzden benim için çalışanı paylaşıyorum.

Komuta

ssh user@host "cat <myconffile.conf" | xclip -sel clip

açıklama

Bu kullanıyor sshgüvenli bir tünel, giriş oluşturmak için user@ hostveya ipdaha sonra çalıştırmak, catiçeriğini yazdırmak için <myconffile.confiçin stdoutdaha sonra komuta olduğunu boru xclip -sel clipiçeriğini yerleştirir yerel makine üzerinde <myconffile.confyerel makinenizde panoya içine.

Gerçek dünyadan örnek kullanım

Bu komut yapısını ssh tuşlarını github'a yapıştırma (basit bir ctrl-V ya da komutu çalıştırdıktan sonra yapıştırma seçimine izin verme gibi) görevler için Ubuntu 16.04 ve 18.04'te Bash ile kullanıyorum. Check out man ssh, man catve man xclipdavranış ve opsiyon detayları için.


Bu bile kopyalamak için çalışır dan başsız sunucular, xcliphiçbir X olmadığı için çalışmaz
tanius

0

LUbuntu'nun lxterminal(çeşitli terminalleri test etti) panoya sshoturumu yapıştırırken benzer bir sorunum var . Pano 100 bayttan daha fazla sürerse, oturum zaman aşımına uğrar ve başarısız olur.

Neredeyse herhangi bir CentOS 5.x sunucusuna ssh ile bağlanıp ardından hedef sunucuya bağlanırsam, panoya yapıştırma herhangi bir makul veri boyutu için sorunsuz çalışır.


0

Başsız bir sunucudan yerel panele, her zamanki SSH oturumunuzun içinden kopyalamak:

  1. ncatYerel ve uzak makinenize kurun . (Uzak makinenizde ayrıca ncdüz veya düz de yapabilirsiniz telnet, ancak yerel makinede Debian ve Ubuntu gibi genel dağıtımlarda bulunmayan komutları ( -c/ -e) yürütme seçeneklerine ihtiyacımız var nc.)

    apt install nmap
    
  2. Yerel makinenizde, 10009 numaralı bağlantı noktasında gelen içeriği X panoya kopyalayacak yerel arayüzü dinleyen bir sunucu kurun:

    ncat --keep-open --listen --sh-exec "xclip -selection clipboard" localhost 10009
    

    Veya eşdeğer steno versiyonunu kullanın:

    ncat -klc "xclip -sel c" localhost 10009
    
  3. Uzak makineye SSH, uzak makinenin 10008 numaralı portundan yerel makinenizdeki (sunucunuzun dinlediği) port 10009'a tersine bir tünel kurulacak şekilde kurulur. Normal çalışmanız için bu SSH oturumunu kullanabilirsiniz.

    ssh -R 10008:localhost:10009 user@example.com
    
  4. Bir dosyanın içeriğini uzak makineden yerel panoya kopyalamak istediğinizde, SSH kabuğunda yürütün:

    ncat --send-only localhost 10008 < file.txt
    

    Ve tabii ki, bir kabuk kısayolu veya komut dosyası olarak paketlendiğinde daha hoş. rclipTanınmışa benzer bir şekilde "uzak panoya kopyala" diyebiliriz xclip.

Avantajları

  • Uzaktaki makineye başka bir SSH oturumu açmanıza gerek yok.

  • xclipUzaktaki makineye gerek yok , bu yüzden X kullanmadan başsız bir sunucu olduğundan kuramazsınız veya kullanamıyorsanız çalışır.

Güvenlik

ncat -l localhost 10009Sunucu için yapıyoruz , bu sadece localhostIP adresli ağ arayüzünde dinliyor demektir . Bu yerel döngü arayüzü sadece kendi makinenizden bağlantılara izin verir (bu durumda SSH ile tünellenmiş tersler de dahil). Bu nedenle, bir güvenlik duvarının arkasında olmasanız bile, 10009 numaralı bağlantı noktanız Internet'teki kimseye maruz kalmaz.

Kaynak

Linux için çalışmak için dergachev / ssh-forward-clipboard.md özü uyarlanmıştır . Bu boşluk aynı zamanda SSH'nin ters tüneli nasıl varsayılan yapacağı konusunda talimatlar da içerir.


-1

https://secure.wikimedia.org/wikipedia/en/wiki/Base64

Pano verilerinizi Base64 ile ASCII metne dönüştürebilirsiniz. Ardından, zaten var olan bir SSH bağlantısının içinden geçirebilirsiniz.


Neden bir şeye dönüştürüyorsun? Bu durumda zaten metindir ve ikili olsa bile, bunun gibi bir boru hattına gönderememeniz için hiçbir sebep yoktur.
Caleb

pano, ikili veri içerebilir, örneğin: derlenmiş bir uygulama
LanceBaynes 14

Evet olabilir, ama bu neden bir problem olsun? İkili veriler bir boru ve ssh tüneli üzerinden aktarılabilir.
Caleb
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.