এসএসএইচ দিয়ে ক্লিপবোর্ডে ইনপুট অনুলিপি করবেন?


33

এখানে আমার ব্যবহারের কেস:

  • কাজের জন্য আমি প্রায়শই এসএসএইচ এর সাথে অন্য কম্পিউটারের সাথে সংযুক্ত থাকি এবং প্রায়শই উদাহরণ লিখতে এবং পাঠ্য ভাগ করে নেওয়ার জন্য স্থানীয়ভাবে চালকদের এডিটরগুলিতে আমার সার্ভার থেকে নথি / পাঠ্য অনুলিপি এবং আটকানো দরকার।
  • প্রায়শই, যদি পাঠ্যটি যথেষ্ট ছোট হয় তবে আমি কেবলমাত্র আমার টার্মিনাল প্রোগ্রামটি আউটপুটটি অনুলিপি করব (মুহূর্তে জিনোম-টার্মিনাল) এবং এটি পেস্ট করব।
  • যাইহোক, যখন এটি সম্পূর্ণ নথির কথা আসে তখন আমার বিকল্পগুলি বেশ সীমিত। আমি হয় নথিকে খণ্ড-বাই-খণ্ডটি অনুলিপি করতে পারি, বা scpএটি স্থানীয় মেশিনে রাখতে পারি।

এমন কোনও প্রোগ্রাম ব্যবহার করার কোনও উপায় আছে xclipযা আমাকে stdinস্থানীয় এক্স সার্ভারের ক্লিপবোর্ডে রিমোট অনুলিপি করার অনুমতি দেবে ? এর প্রভাব কিছু:

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

সুন্দর হবে. এটি সম্ভব করার জন্য কি কিছু বিদ্যমান আছে?

উত্তর:


20

যদি আপনি এক্স ফরওয়ার্ডিংয়ের সাথে এসএসএস চালনা করেন তবে এটি স্বচ্ছ: দূরবর্তী কমান্ডগুলির (সহ xclip) আপনার এক্স সার্ভারে (এর কীবোর্ড সহ ) অ্যাক্সেস রয়েছে। ForwardX11 yesআপনার ~/.ssh/configএবং X11Forwarding yesসার্ভারে রয়েছে তা নিশ্চিত করুন sshd_config(আপনার বিতরণের উপর নির্ভর করে এই বিকল্পগুলি ডিফল্টরূপে চালু বা বন্ধ হতে পারে)।

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

রিমোট ফাইলগুলিতে কাজ করার অন্যান্য উপায় রয়েছে যা আরও সুবিধাজনক হতে পারে, উদাহরণস্বরূপ আপনার স্থানীয় মেশিনে এসএসএফএফ দ্বারা দূরবর্তী ডিরেক্টরিগুলি মাউন্ট করা , বা ট্রাম্পের সাহায্যে ইম্যাক্সে দূরবর্তী ফাইলগুলি খোলার । আপনার যদি ssh এবং FUSE সেট আপ এবং এসএসএইচএফ ইনস্টল করা থাকে তবে এসএসএইচএফগুলি যতটা সহজ mkdir ~/net/myserver; sshfs myserver:/ ~/net/myserver। যদি আপনি ssh সেট আপ করে থাকেন এবং Emacs ইনস্টল করা থাকে তবে ট্র্যাম্পটি খোলার মতোই সহজ /myserver:/path/to/file


1
কনফিড ফাইলে ডিফল্টরূপে জিনিসগুলি চালানোর জন্য কোনও সুরক্ষা দুর্বলতা?
নাফটুলি কে

না। সমস্ত এক্স 11 ট্র্যাফিক এসএসএইচ চ্যানেলের মাধ্যমে ফরোয়ার্ড করা হয়েছে।
শাদুর

2
পছন্দ করেছেন সার্ভার সাইডে, কিছুই নেই। ক্লায়েন্টের দিক থেকে, সামান্য এটির ফলে এটি সার্ভার প্রশাসককে আপনার ক্লায়েন্টে প্রবেশের একটি উপায় দেয়, তবে 99% ক্ষেত্রে সার্ভার অ্যাডমিনের যেভাবেই উপায় রয়েছে; দেখুন যদি আমার কম্পিউটারে কেউ এসএসএইচে সাইন ইন করে থাকে তবে আমি কি তাদের কম্পিউটারটি অ্যাক্সেস করতে পারি?
গিলস'স'-দুষ্ট হওয়া বন্ধ করুন '

7

আপনার বিশেষ কিছু লাগবে না; যেহেতু xclipকাজ শেষ stdin, ঠিক

ssh remotehost xclip < myconf.conf

কেন এটি দিয়ে সংশোধন করা দরকার sed? sshটার্মিনাল হিসাবে ব্যবহার না করা হলে ডেটা স্বচ্ছ হয় এবং সাধারণত পাইপলাইনে যেমন ব্যবহৃত হয়

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

বিদ্যমান এসএসএইচ অধিবেশন থেকে এটি করার কোনও উপায় আছে কি? আমি যদি ইতিমধ্যে প্রশ্নে থাকা মেশিনে একটি খোলা থাকে তবে আমি অন্য একটি টার্মিনাল উইন্ডোটি খুলতে না চাই।
নাফটুলি কে

এবং সেডে কেবল উদাহরণ হিসাবে রয়েছে, যদি আমি stdinক্লিপবোর্ডে অনুলিপি করার আগে কোনও প্রক্রিয়া সম্পাদন করতে চাই, তবে আমি সেই বিকল্পটি চাই।
নাফটুলি কে

না, বিদ্যমান sshসেশনে ডেটা ইনজেক্ট করার কোনও উপায় নেই (এটি যদি আপনি পারেন তবে খুব বেশি সুরক্ষিত হত না)। আপনি সেট আপ করতে পারেন ssh ControlMasterএকটি বিদ্যমান উপর মাল্টিপ্লেক্স অতিরিক্ত এর সাথে সংযুক্ত কাপড়, কিন্তু এটা সত্যিই নতুনদের জন্য কিছু নয় এবং আপনি এখনও এটা একই ভাবে পরে না, অন্য স্থানীয় টার্মিনালে সুইচিং এবং উপরোক্ত কমান্ডটি (যা নেই দ্বারা না একটি নতুন খুলুন টার্মিনাল উইন্ডো)।
গাইকোসর

@ নাফতুলিকে একটি সমাধানের জন্য যা আপনার সাধারণ এসএসএইচ সেশনের অভ্যন্তরে কাজ করে, আমার উত্তর দেখুন
ট্যানিয়াস


3

যদি আপনার স্থানীয় মেশিনটি উইন্ডোজ (7+) চলছে তবে আপনি কেবল কমান্ডলাইন থেকে এটি ব্যবহার করতে পারেন:

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

1

~ / .Ssh / কনফিগ:

Host REMOTEHOST
    ...
    ForwardX11 yes

জন্য / etc / SSH / sshd_config:

X11Forwarding yes

ব্যাশ:

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

1

@ ডি-রায়েভ এবং @ উইলিয়াম-ক্যাসারিন সমাধানগুলির সাথে খুব মিল, তবে এটি আলাদা তবে আমার পক্ষে কী কাজ করেছে তা ভাগ করে নিচ্ছি।

আদেশ

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

ব্যাখ্যা

এটি sshএকটি সুরক্ষিত টানেল তৈরির জন্য, user@ hostবা লগইন করার জন্য ব্যবহার করছে ip, তারপরে আপনার স্থানীয় মেশিনের কমান্ডটিতে যে পাইপ দিচ্ছে তার catসামগ্রীগুলি মুদ্রণের জন্য নির্বাহ করুন, যা আপনার স্থানীয় মেশিনের ক্লিপবোর্ডে থাকা সামগ্রীগুলি রাখে ।<myconffile.confstdoutxclip -sel clip<myconffile.conf

বাস্তব বিশ্বের উদাহরণ ব্যবহার

আমি উবুন্টু 16.04 এবং 18.04-তে বাশ-এর ​​সাথে গিথুব-এ ssh কীগুলি আটকে দেওয়ার (কমান্ডটি চালানোর পরে একটি সহজ সিআরটিএল-ভি বা পেস্ট নির্বাচনের অনুমতি দেওয়া) কাজের জন্য এই কমান্ড কাঠামোটি ব্যবহার করি। পরীক্ষা করে দেখুন man ssh, man catএবং man xclipআচরণ এবং বিকল্প বিস্তারিত জানার জন্য।


এটি এমনকি হেডলেস সার্ভারগুলি থেকে অনুলিপি করার জন্য কাজ করে, যেখানে xclipকোনও এক্স নেই বলে চলবে না
t

0

LUbuntu এর lxterminal(পরীক্ষিত বিভিন্ন টার্মিনাল) sshসেশনটিতে ক্লিপবোর্ড আটকে দেওয়ার ক্ষেত্রে আমার একই সমস্যা রয়েছে । ক্লিপবোর্ডে সেশন সময়সীমা প্রায় 100 টিরও বেশি বাইট থাকে এবং ব্যর্থ হয়।

যদি আমি প্রায় কোনও সেন্টোস ৫.x সার্ভারের সাথে এসএসএসের মাধ্যমে সংযোগ স্থাপন করি এবং তারপরে টার্গেট সার্ভারের সাথে সংযোগ করি তবে ক্লিপবোর্ডের পেস্ট কোনও যুক্তিসঙ্গত ডেটার আকারের জন্য কোনও সমস্যা ছাড়াই কাজ করে।


0

হেডলেস সার্ভার থেকে স্থানীয় ক্লিপবোর্ডে অনুলিপি করা হচ্ছে আপনার সাধারণ এসএসএইচ অধিবেশন থেকে:

  1. ncatআপনার স্থানীয় এবং দূরবর্তী মেশিনে ইনস্টল করুন। (আপনার রিমোট মেশিনে আপনি এটি দিয়ে ncবা সরলভাবে করতে পারেন telnet, তবে স্থানীয় মেশিনে আমাদের আদেশগুলি ( -c/ -e) চালানোর জন্য বিকল্পের প্রয়োজন যা ncডিবিয়ান এবং উবুন্টুর মতো সাধারণ বিতরণে পাওয়া যায় না))

    apt install nmap
    
  2. আপনার স্থানীয় মেশিনে, স্থানীয় ইন্টারফেসে এমন একটি সার্ভার শোনার সেট আপ করুন যা আপনার এক্স ক্লিপবোর্ডে 10009 বন্দরে আসা সামগ্রীগুলি অনুলিপি করবে:

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

    বা সমতুল্য শর্টহ্যান্ড সংস্করণ ব্যবহার করুন:

    ncat -klc "xclip -sel c" localhost 10009
    
  3. রিমোট মেশিনে এসএসএইচটি এমনভাবে প্রবেশ করুন যাতে রিমোট মেশিনের পোর্ট 10008 থেকে আপনার স্থানীয় মেশিনে 10009 পোর্টে বিপরীত সুড়ঙ্গ স্থাপন করা হয় (যেখানে আপনার সার্ভারটি শুনছে)। আপনি নিজের সাধারণ কাজের জন্য সেই এসএসএইচ সেশনটি ব্যবহার করতে পারেন।

    ssh -R 10008:localhost:10009 user@example.com
    
  4. আপনি যখন কোনও ফাইলের সামগ্রীগুলি দূরবর্তী মেশিন থেকে স্থানীয় ক্লিপবোর্ডে অনুলিপি করতে চান, তখন এসএসএইচ শেলটিতে সম্পাদন করুন:

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

    এবং অবশ্যই, এটি শেল শর্টকাট বা স্ক্রিপ্ট হিসাবে প্যাকেজড করার সময় খুব সুন্দর। আমরা এটিকে rclipসুপরিচিতদের সাথে সাদৃশ্য হিসাবে "[অনুলিপি ক্লিপবোর্ডের" জন্য) কল করতে পারি xclip

সুবিধাদি

  • রিমোট মেশিনে আর একটি এসএসএইচ সেশন খোলার দরকার নেই।

  • xclipরিমোট মেশিনে কোনও প্রয়োজন নেই , তাই এটি ইনস্টল করতে না পারলে বা এটি ব্যবহার না করতে পারলে এটি কাজ করে কারণ এটি এক্স ছাড়াই একটি হেডলেস সার্ভার because

নিরাপত্তা

আমরা ncat -l localhost 10009সার্ভারের জন্য করি, যার অর্থ এটি কেবলমাত্র localhostআইপি ঠিকানার সাথে নেটওয়ার্ক ইন্টারফেসে শোনে । এই স্থানীয় লুপ ইন্টারফেসটি কেবলমাত্র আপনার নিজের মেশিন থেকে সংযোগের অনুমতি দেয় (এই ক্ষেত্রে, এসএসএইচ-এর মাধ্যমে বিপরীত হওয়া এইগুলি সহ)। সুতরাং আপনি ফায়ারওয়ালের পিছনে না থাকলেও আপনার পোর্ট 10009 ইন্টারনেটে কারও কাছে উন্মুক্ত করা হয়নি।

সূত্র

লিনাক্সের জন্য কাজ করতে গিস্ট ডারগাচেভ / এসএসএস-ফরওয়ার্ড-ক্লিপবোর্ড.এমডি থেকে অভিযোজিত । সেই সূত্রে কীভাবে এসএসএইচ বিপরীত সুড়ঙ্গকে ডিফল্ট করা যায় তার জন্য নির্দেশাবলী রয়েছে।


-1

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

আপনি আপনার ক্লিপবোর্ডের ডেটা বেস 64 এর সাথে ASCII পাঠ্যে রূপান্তর করতে পারেন। তারপরে আপনি এটি ইতিমধ্যে বিদ্যমান এসএসএইচ সংযোগের মধ্যে দিয়ে যেতে পারেন।


কেন কিছুতে রূপান্তর? এটি ইতিমধ্যে এই ক্ষেত্রে পাঠ্য এবং এটি বাইনারি হলেও আপনি এটির মতো পাইপলাইনটি এটি প্রেরণ করতে পারবেন না এমন কোনও কারণ নেই।
কালেব

ক্লিপবোর্ডে বাইনারি ডেটা থাকতে পারে, উদাহরণস্বরূপ: একটি সংকলিত অ্যাপ্লিকেশন
ল্যান্সবায়নেস

হ্যাঁ এটা পারে, তবে কেন এমন সমস্যা হবে? বাইনারি ডেটা একটি পাইপ এবং ssh টানেলের মাধ্যমে স্থানান্তর করা যেতে পারে।
কালেব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.