দূরবর্তী এসএসএইচ সেশন থেকে কীভাবে স্থানীয় ক্লিপবোর্ডে ডেটা প্রেরণ করা যায়


161

বর্ডারলাইন সার্ভারফল্ট প্রশ্ন, তবে আমি কয়েকটি শেল স্ক্রিপ্ট প্রোগ্রাম করছি , তাই আমি এখানে প্রথমে চেষ্টা করছি :)

বেশিরভাগ * নিক্সের একটি কমান্ড রয়েছে যা আপনাকে স্থানীয় ক্লিপবোর্ড / পেস্টবোর্ডে আউটপুটটি পাইপ / পুনঃনির্দেশ করতে এবং একই থেকে পুনরুদ্ধার করতে দেয়। ওএস এক্স-এ এই কমান্ডগুলি রয়েছে

pbcopy, pbpaste 

অন্য সার্ভারে এসএসএইচড থাকাকালীন কি এই কার্যকারিতাটির প্রতিলিপি তৈরির উপায় আছে? এটাই,

  1. আমি কম্পিউটার এ ব্যবহার করছি
  2. আমি একটি টার্মিনাল উইন্ডো খুলি
  3. আমি এসএসএইচ থেকে কম্পিউটার বি
  4. আমি কম্পিউটার বি তে একটি কমান্ড চালাচ্ছি
  5. কম্পিউটার বি এর আউটপুট পুনঃনির্দেশিত হয় বা স্বয়ংক্রিয়ভাবে কম্পিউটার এ এর ​​ক্লিপবোর্ডে অনুলিপি করা হয়।

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

কোড কার্যকর, তবে সাধারণ পদ্ধতির পাশাপাশি প্রশংসা করা হয়।

উত্তর:


89

আমি এই থ্রেডটি পুনরুত্থিত করছি কারণ আমি একই ধরণের সমাধান খুঁজছি এবং আমার জন্য কাজ করে এমন একটি সন্ধান পেয়েছি। ওএসএক্স ডেইলি থেকে দেওয়া পরামর্শে এটি একটি সামান্য পরিবর্তন

আমার ক্ষেত্রে, আমি এসএসএইচ এর মাধ্যমে একটি লিনাক্স সার্ভারে সংযোগ করতে আমার স্থানীয় ওএসএক্স মেশিনে টার্মিনাল ব্যবহার করি। ও.পি. এর মতো, আমি কেবল কীবোর্ড ব্যবহার করে টার্মিনাল থেকে আমার স্থানীয় ক্লিপবোর্ডে পাঠ্যের ছোট বিট স্থানান্তর করতে সক্ষম হতে চাই।

সমাধানের সারমর্ম:

commandThatMakesOutput | ssh desktop pbcopy

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

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

অন্যান্য উদাহরণ:

ls  | ssh desktopIpAddress pbcopy
pwd |  ssh desktopIpAddress pbcopy

সুবিধার জন্য, পাইপের পরে প্রয়োজনীয় পাঠ্য সংক্ষিপ্ত করতে আমি একটি বাশ ফাইল তৈরি করেছি:

#!/bin/bash
ssh desktop pbcopy

আমার ক্ষেত্রে, আমি একটি বিশেষ নামযুক্ত কী ব্যবহার করছি

আমি ফাইল নামের মধ্যে এটি সংরক্ষিত CB (আমার স্মৃতিসম্বন্ধীয় (ক্লিপবোর্ড) আপনার পাথ স্ক্রিপ্ট কোথাও রাখুন, এটা এক্সিকিউটেবল এবং voila ভুলবেন না।:

ls | cb

3
আমি প্রায়শই এটি ভিমে। এটি করতে, ভিজ্যুয়াল মোডে আপনি কী অনুলিপি করতে চান তা নির্বাচন করুন, তারপরে টাইপ করুন::'<,'>w !ssh desktop pbcopy
মাইক ব্রেেনান

@ মাইকব্রেনান আপনি যখন পাঠ্যটি নির্বাচন করেছেন, আপনি কেন কেবলমাত্র সিএমডি + সি (বা আপনি যে কোনও অনুলিপি কী সেট করেছেন) টিপবেন না? ...
পেট্র পেলার

36
এটির মতো এটি কেবল তখনই কার্যকর হয় যখন আপনার ডেস্কটপে একটি স্থির আইপি থাকে এবং আপনি যে বাক্সটি প্রবেশ করতে চান সেটি থেকে সেগুলি পৌঁছতে পারে। এটা আমার জন্য কখনও হয় না।
kqw

6
চারপাশের অন্য উপায় কি সহজ হবে না? ssh ইউজার @ রিমোট 'কমান্ডট্যাটমেকস আউটপুট' | পিবিসিপি
রুলিও

আমার -e noneএখানে বর্ণিত এসএস
প্যাট মাইরন

122

আমার প্রিয় উপায় ssh [remote-machine] "cat log.txt" | xclip -selection c । এটি সর্বাধিক কার্যকর যখন আপনি দূরবর্তী থেকে স্থানীয় থেকে এসএসএস করতে চান না (বা করতে পারবেন না)।

সম্পাদনা: সাইগউইনে ssh [remote-machine] "cat log.txt" > /dev/clipboard

সম্পাদনা করুন: nbren12 থেকে একটি সহায়ক মন্তব্য:

এসএসএইচ পোর্ট ফরওয়ার্ডিং ব্যবহার করে বিপরীত এসএসএস সংযোগ স্থাপন করা প্রায় সর্বদা সম্ভব। RemoteForward 127.0.0.1:2222 127.0.0.1:22আপনার স্থানীয় সার্ভারের প্রবেশে কেবল যুক্ত করুন .ssh/config, এবং তারপরে ssh -p 2222 127.0.0.1রিমোট মেশিনে চালিত করুন, যা সংযোগটি স্থানীয় মেশিনে পুনর্নির্দেশ করবে। - nbren12


6
+1: বিপরীত এসএসএইচ সংযোগ সম্ভব না হলে অন্যান্য সমাধানের চেয়ে এত সহজ!
জন ডিবলিং

9
আপনি যে অত্যন্ত সহজ সমাধান জন্য আরও পছন্দ প্রাপ্য!
কামিল ডিজেডজিক

31
ম্যাক ওএসএক্স-এ আমাদের মধ্যে যারাssh [remote-machine] "cat log.txt" | pbcopy
চৌবি

1
এখানে এই প্রতিবেদন অনুসারে , আমাকে catসাইগউইন উইন্ডোজ 8 এ কাজ করার জন্য এটি ব্যবহার করতে হয়েছিল: ssh [remote-machine] "cat log.txt" | cat > /dev/clipboard(অবশ্যই, আমার দূরবর্তী কমান্ডটি ছিল না cat; এটি কোনও vagrant ssh -c "command" | cat > /dev/clipboard
বাস্তু

7
এসএসএইচ পোর্ট ফরওয়ার্ডিং ব্যবহার করে বিপরীত এসএসএস সংযোগ স্থাপন করা প্রায় সর্বদা সম্ভব। RemoteForward 127.0.0.1:2222 127.0.0.1:22আপনার স্থানীয় সার্ভার এন্ট্রিগুলিতে কেবল যুক্ত করুন .ssh/config, এবং তারপরে ssh -p 2222 127.0.0.1দূরবর্তী মেশিনে চালিত করুন, যা স্থানীয় মেশিনে সংযোগটি পুনর্নির্দেশ করবে।
nbren12

30

বিপরীত এসএসএস সংযোগের প্রয়োজন নেই এমন দুর্দান্ত সমাধান খুঁজে পেয়েছেন!

আপনি ওএসএক্স সিস্টেমে ssh X11 ফরওয়ার্ডিং এবং এক্সকুয়ার্টজ সহ রিমোট হোস্টে এক্সক্লিপ ব্যবহার করতে পারেন।

এটি সেট আপ করতে:

  1. ইনস্টল করুন XQuartz (আমি এই করেনি একক + + pivotal_workstation :: xquartz রেসিপি , কিন্তু আপনি করতে হবে না)
  2. এক্সকুয়ার্টজ.এপ চালান
  3. এক্সকুয়ার্টস পছন্দগুলি খুলুন ( kb_command+ ,)
  4. নিশ্চিত করুন " সিআইএনপিবোর্ড পরিবর্তনগুলি যখন চেক করা থাকে তখন" সিঙ্কিং সক্ষম করুন " এবং " পাস্তবোর্ড আপডেট করুন। "এক্সকিয়ার্টজ পছন্দসমূহ উইন্ডোর উদাহরণ
  5. ssh -X remote-host "echo 'hello from remote-host' | xclip -selection clipboard"

1
এটি কীভাবে আলাদা ssh remote-host "echo 'hello from remote-host' | pbcopy? এটি যদি এইরকম কিছু কাজ করে তবে এটি একটি দুর্দান্ত উত্তর হবে: ssh -X remote-hostতারপরে রিমোট হোস্টে:echo 'hello from remote-host' | xclip -selection clipboard
kqw

5
@KasperSouren। আমি বিশ্বাস করি এটি কীভাবে আপনি আশা করছেন তা কার্যকর করে। `| xclip` ডাবল উদ্ধৃতিগুলির ভিতরে।
gdw2

1
২০১ 2016 সালে এটি অবশ্যই সেরা, নন-ফ্রিল সমাধান। অন্যটি ভুলে যান, বিপরীত-এসএস ভিত্তিক সমাধানগুলি।
শিবমস

1
এটি করার জন্য কি কোনও উপায় আছে / ও এটি কেবল এক-অফ কমান্ড? আমি আমার দূরবর্তী সার্ভারে ssh এর মাধ্যমে ইন্টারেক্টিভ সেশনে লগইন করতে চাই এবং তারপরে আমার স্থানীয় ক্লিপবোর্ডে নির্বিচারে পাঠাতে সক্ষম হতে চাই। এর জন্য কি বিপরীত এসএসএস দরকার?
কেভাস

2
@ কেভাস: যতক্ষণ আপনি -Xএসএসএইচ থেকে এক্স 11 ফরওয়ার্ডিংয়ের জন্য ব্যবহার করছেন , এক্স 11 প্রোগ্রামগুলি উপরের এক্সকোয়ার্টজ সেটিংসের মাধ্যমে আপনার ক্লিপবোর্ড আপডেট করতে সক্ষম হবে। ওয়ান-অফ কমান্ডটি দেখানো হচ্ছে যে echoরিমোট হোস্টের ক্লিপবোর্ডের মাধ্যমে xclipকোনও কিছু পাঠানো কাজ করে এবং আপনার স্থানীয় এসএসএইচ ক্লায়েন্ট হোস্টের সাথে সিঙ্ক করা উচিত। @ Gdw2 হিসাবে নোটটি বলে, " | xclipএটি দ্বিগুণ উদ্ধৃতিগুলির অভ্যন্তরে"। এর মতো, এটির ক্লিপবোর্ডে কিছু প্রেরণের জন্য এটি রিমোট সার্ভারে একটি আদেশ হিসাবে কার্যকর করা হবে।
ত্রিনিট্রনএক্স

18

Ssh সার্ভারে বিপরীত টানেল পোর্ট port

সমস্ত বিদ্যমান সমাধানগুলির প্রয়োজন হয়:

  • ক্লায়েন্টে এক্স 11 (যদি এটি xclipথাকে তবে সার্ভারে দুর্দান্ত কাজ করে) বা
  • ক্লায়েন্ট এবং সার্ভার একই নেটওয়ার্কে থাকতে হবে (আপনি যদি নিজের বাড়ির কম্পিউটারে অ্যাক্সেস করার চেষ্টা করছেন তবে এমনটি হয় না)।

এটি করার আরও একটি উপায় এখানে রয়েছে, যদিও আপনাকে কীভাবে আপনার কম্পিউটারে প্রযোজ্য তা আপনাকে সংশোধন করতে হবে।

আমি এটি ব্যবহার শুরু করেছি এবং এটি ভয় দেখানোর মতো কাছাকাছি কোথাও নেই তাই এটি চেষ্টা করে দেখুন।

ক্লায়েন্ট (ssh সেশন শুরু)

ssh username@server.com -R 2000:localhost:2000

(ইঙ্গিত: এটিকে কী-বাইন্ডিং করুন যাতে আপনার এটি টাইপ করতে হবে না)

ক্লায়েন্ট (অন্য ট্যাব)

nc -l 2000 | pbcopy

দ্রষ্টব্য: যদি আপনার কাছে না থাকে pbcopyতবে এটি কেবল teeএকটি ফাইলের কাছে।

সার্ভার (এসএসএইচ সেশনের অভ্যন্তরে)

cat some_useful_content.txt | nc localhost 2000

অন্যান্য নোট

প্রকৃতপক্ষে এমনকি যদি আপনি কোনও এসএস সেশনের মাঝখানে থাকেন তবে একটি সুড়ঙ্গ শুরু করার উপায় আছে তবে আমি মানুষকে যা ভয়ঙ্কর দেখায় না খারাপ থেকে দূরে রাখতে চাই না। তবে আমি যদি আগ্রহ দেখি তবে পরে বিশদ যুক্ত করব


1
+1 - এটি বেশ ঝরঝরে। যাইহোক - cat some_useful_content.txt | nc localhost 2000আমি যখন এটি করি তখন কমান্ডটি স্তব্ধ হয়ে যায়। এটি বন্ধ করার জন্য আমাকে ম্যানুয়ালি সিটিআর-সি করতে হবে এবং এটি কেবল তখনই সামগ্রীটি আমার ক্লায়েন্ট ক্লিপ / পেস্টবোর্ডে চলে আসে
অ্যালান স্টর্ম

1
অন্য প্রান্তে কেউ ডেটা প্রত্যাখ্যান না করা পর্যন্ত এটি অপেক্ষা করবে।
শ্রীধর সারনোবাত

আসলে আমি মনে করি আপনার প্রশ্নটি আমি ভুল বুঝেছি। আমি কেন জানি না তা নিশ্চিত।
শ্রীধর সারনোবাত

nc -l -pআমার জন্য কাজ করে, কিন্তু ঠিক nc -lনা। এবং আমারও @ অ্যালানস্টর্মের সমস্যা আছে।
শুভফিডিস

1
আমি নির্দিষ্ট করে নেটকাট হ্যাং করার সমস্যাটি সমাধান করেছি -c। আমি ব্রিউ দ্বারা ইনস্টল করা জিএনইউ নেটকাট ব্যবহার করি।
শুভফ্রিজ

7

এক্সক্লিপ এবং এক্সসেল সহ এক্স 11 নির্বাচনগুলি অ্যাক্সেস করার জন্য বিভিন্ন সরঞ্জাম রয়েছে । নোট করুন যে X11 traditionতিহ্যগতভাবে একাধিক নির্বাচন রয়েছে এবং বেশিরভাগ প্রোগ্রামের ক্লিপবোর্ড এবং প্রাথমিক নির্বাচন উভয়ই (যা একই নয়) এর কিছুটা উপলব্ধি রয়েছে। ইম্যাকস মাধ্যমিক নির্বাচনের সাথেও কাজ করতে পারে তবে এটি বিরল, এবং কাটা বাফারগুলির সাথে কী করা উচিত তা কেউ সত্যই জানে না ...

cl এক্সক্লিপ -হেল্প
ব্যবহার: এক্সক্লিপ [অপশন] [ফাইল] ...
পড়া বা লেখার জন্য একটি এক্স সার্ভার নির্বাচন অ্যাক্সেস করুন।

  -i, -তে স্ট্যান্ডার্ড ইনপুট বা ফাইলগুলি থেকে X নির্বাচনের পাঠ্য পড়ুন
                   (ডিফল্ট)
  -ও, -আউট নির্বাচনটি স্ট্যান্ডার্ড আউট প্রিন্ট করে (সাধারণত এর জন্য
                   একটি ফাইল বা প্রোগ্রামে পাইপিং করা)
  -l, -স্থানীয় নির্বাচনের অনুরোধের বাইরে বেরোনোর ​​আগে অপেক্ষা করতে হবে lo
  -d, -র সাথে সংযোগ স্থাপনের জন্য এক্সপ্লে ডিসপ্লে (উদাহরণস্বরূপ লোকালহোস্ট: 0 ")
  -হ, -হেল্প ব্যবহারের তথ্য
      অ্যাক্সেসের জন্য নির্বাচন নির্বাচন ("প্রাথমিক", "মাধ্যমিক", "ক্লিপবোর্ড" বা "বাফার-কাট")
      -noutf8 পাঠ্যটিকে utf-8 হিসাবে বিবেচনা করবেন না, পুরানো ইউনিকোড ব্যবহার করুন
      সংস্করণ সংস্করণ তথ্য
      নিঃশব্দ ত্রুটি শুধুমাত্র, পটভূমিতে চালানো (ডিফল্ট)
      -গ্রাউন্ডে শান্ত চালানো, কী ঘটছে তা দেখান
      -ব্যবস চলমান ভাষ্য

বাগগুলিতে <astrand@lysator.liu.se> কে প্রতিবেদন করুন
sel এক্সেল -হেল্প
ব্যবহার: এক্সেল [বিকল্পসমূহ]
এক্স নির্বাচন পরিচালনা করুন।

ডিফল্টরূপে বর্তমান নির্বাচন আউটপুট এবং যদি উভয়ই সংশোধিত হয় না
স্ট্যান্ডার্ড ইনপুট এবং স্ট্যান্ডার্ড আউটপুট হ'ল টার্মিনাল (ttys)। তা না হলে,
স্ট্যান্ডার্ড আউটপুটটি টার্মিনাল না হলে বর্তমান নির্বাচন আউটপুট
(tty), এবং মানটি স্ট্যান্ডার্ড ইনপুট থেকে নির্বাচনটি স্ট্যান্ডার্ড ইনপুট থেকে সেট করা আছে
টার্মিনাল (tty) নয়। যদি কোনও ইনপুট বা আউটপুট বিকল্প দেওয়া হয়
প্রোগ্রামটি কেবল অনুরোধ মোডে আচরণ করে।

যদি ইনপুট এবং আউটপুট উভয়ই প্রয়োজনীয় হয় তবে পূর্ববর্তী নির্বাচনটি
স্ট্যান্ডার্ড ইনপুট বিষয়বস্তু দ্বারা প্রতিস্থাপন করার আগে আউটপুট।

ইনপুট বিকল্পগুলি
  -এ, - অ্যাপ্লিকেশনটিতে স্ট্যান্ডার্ড ইনপুট যুক্ত করুন
  -f, - ফাঁকা স্ট্যান্ডার্ড ইনপুট বাড়ার সাথে সাথে নির্বাচনের সাথে সংযোজন করুন
  -আই, - ইনপুট নির্বাচনের মধ্যে স্ট্যান্ডার্ড ইনপুট পড়ুন

আউটপুট বিকল্পগুলি
  -o, --output নির্বাচনটি স্ট্যান্ডার্ড আউটপুটে লিখুন

ক্রিয়া বিকল্পগুলি
  -সি, - পরিষ্কার নির্বাচন পরিষ্কার করুন
  -d, - নির্বাচনটি ক্লিয়ার করে দেওয়ার অনুরোধ করুন
                        এটির মালিকানাধীন অ্যাপ্লিকেশনটি এর সামগ্রীগুলি মুছে দেয়

নির্বাচন বিকল্প
  -পি, - প্রাথমিক নির্বাচনের উপর প্রাথমিক চালনা করুন (ডিফল্ট)
  -s, - সেকেন্ডারি SECONDARY নির্বাচনের উপর পরিচালনা করুন
  -বি, - ক্লিপবোর্ড ক্লিপবোর্ড নির্বাচনের কাজ করে

  -কে, - সংরক্ষণ নির্বাচনগুলি সংশোধন করবেন না, তবে প্রাথমিক করুন
                        এবং দ্বিতীয় নির্বাচনগুলি পরেও স্থির থাকে
                        প্রোগ্রামগুলি তারা প্রস্থান করার সময় নির্বাচিত হয়েছিল।
  -x, - এক্সচেঞ্জ প্রাথমিক এবং দ্বিতীয় পছন্দ নির্বাচন

এক্স বিকল্প
  - ডিসপ্লে প্রদর্শন নাম
                        এক্স সার্ভারের সাথে সংযোগ উল্লেখ করুন
  -t এমএস, - সিলেকশনটাইমআউট এমএস
                        সময়সীমাটি মিলিসেকেন্ডে নির্দিষ্ট করুন যার মধ্যে
                        নির্বাচন পুনরুদ্ধার করা আবশ্যক। 0 (শূন্য) এর মান
                        কোনও সময়সীমা নির্দিষ্ট করে না (ডিফল্ট)

বিবিধ বিকল্প
  -l, --logfile ত্রুটিযুক্ত হওয়ার সময় লগ করতে ফাইল নির্দিষ্ট করুন।
  -n, --nodetach নিয়ন্ত্রণকারী টার্মিনাল থেকে পৃথক করবেন না। ছাড়া
                        এই বিকল্পটি, xsel একটি পটভূমিতে কাঁটাচামচ হবে
                        ইনপুট প্রক্রিয়া, বিনিময় এবং মোড রাখা।

  -h, --help এই সহায়তা প্রদর্শন করুন এবং প্রস্থান করুন
  -v, --verbose তথ্যমূলক বার্তা প্রিন্ট করুন
  --version আউটপুট সংস্করণ তথ্য এবং প্রস্থান

দয়া করে বাগগুলিকে <conrad@vergenet.net> এ প্রতিবেদন করুন।

সংক্ষেপে, আপনি যা চান তার উপর নির্ভর করে আপনার xclip -i/ xclip -oবা xclip -i -sel clip/ xclip -o -sel clipঅথবা xsel -i/ xsel -oবা xsel -i -b/ চেষ্টা করা উচিত xsel -o -b


4
@Ephemient যোগ করার জন্য 'এর পোস্ট: একটি দূরবর্তী হোস্ট সাথে ব্যবহারের xclip & xsel জন্য, আপনি এখন মত X11 ফরওয়ার্ডিং ব্যবহার করতে পারেন: ssh -C -X user@remote-host। যদি রিমোট সাইডে এক্সক্লিপ চালানো কাজ করছে বলে মনে হচ্ছে না, নিশ্চিত করুন যে X11Forwarding yesরিমোট /etc/ssh/sshd_configফাইলটিতে সেট করা আছে । এছাড়াও নিশ্চিত xauthকরুন যে রিমোট দিকে ইনস্টল করা আছে। হেডলেস মেশিনের জন্য, আপনি ইনস্টল করতে পারেন xauthএবং xvfb
ট্রিনিট্রনএক্স

অতিরিক্ত বিবরণ প্লাস ভিম কী বাইন্ডিং সহ এখানে একটি বিবরণ দেওয়া আছে।
টিম বুনস

1
@ ট্রিনিট্রনএক্স ওহ বাহ - একটি প্রাচীরের বিরুদ্ধে মাথা ঠেকিয়ে, xvfbউল্লেখ করার জন্য ধন্যবাদ । আমি একটি হেডলেস সার্ভার চালাচ্ছিলাম, তাই এক্স 11 অবশ্যই চলছিল না!
ক্যাম

5

এটি আমার সমাধানটি এসএসএইচের বিপরীত টানেল, নেটক্যাট এবং এক্সক্লিপের উপর ভিত্তি করে।

প্রথমে আপনার ওয়ার্কস্টেশনে স্ক্রিপ্ট তৈরি করুন (উদাঃ ক্লিপবোর্ড- ডেমোন.শ):

#!/bin/bash
HOST=127.0.0.1
PORT=3333

NUM=`netstat -tlpn 2>/dev/null | grep -c " ${HOST}:${PORT} "`
if [ $NUM -gt 0 ]; then
    exit
fi

while [ true ]; do
    nc -l ${HOST} ${PORT} | xclip -selection clipboard
done

এবং এটি পটভূমিতে শুরু করুন।

./clipboard-daemon.sh&

এটি ডেটার অংশ পাওয়ার পরে এনসি পাইপিং আউটপুট এক্সক্লিপ এবং রেসওয়ানিং প্রক্রিয়া শুরু করবে

তারপরে দূরবর্তী হোস্টের সাথে ssh সংযোগ শুরু করুন:

ssh user@host -R127.0.0.1:3333:127.0.0.1:3333

রিমোট বাক্সে লগ ইন করার পরে, এটি চেষ্টা করুন:

echo "this is test" >/dev/tcp/127.0.0.1/3333

তারপরে আপনার ওয়ার্কস্টেশনে পেস্ট করে দেখুন

আপনি অবশ্যই মোড়ক স্ক্রিপ্ট লিখতে পারেন যা প্রথমে ক্লিপবোর্ড- ডেমোন.শ শুরু করে এবং তারপরে সেশন সেশন। এটি আমার পক্ষে এভাবে কাজ করে। উপভোগ করুন।


এই সমাধানটিই আমার পক্ষে সবচেয়ে ভাল কাজ করেছে। এটি খুব জটিল নয় এবং সঠিকভাবে কাজ করে।
মার্সেল ভালদেজ ওরোজকো 10'18

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

4

ওয়ান-লাইনার নয়, তবে অতিরিক্ত কোনও এসএসএস প্রয়োজন নেই

  • netcatপ্রয়োজনে ইনস্টল করুন
  • ব্যবহার termbin : cat ~/some_file.txt | nc termbin.com 9999। এটি termbinওয়েবসাইটে আউটপুট অনুলিপি করবে এবং আপনার আউটপুটে URL টি মুদ্রণ করবে।
  • আপনার কম্পিউটার থেকে url এ যান, আপনি আপনার আউটপুট পাবেন

অবশ্যই এটি সংবেদনশীল সামগ্রীর জন্য ব্যবহার করবেন না।


বাহ এটি একটি খুব সৃজনশীল সমাধান।
শ্রীধর সারনোবাত

3

এই উত্তরটি আরও সুরক্ষা যুক্ত করে নির্বাচিত উত্তরের উপর উভয় বিকাশ করে ।

এই উত্তরটি সাধারণ রূপ নিয়ে আলোচনা করেছে

<command that makes output> | \
    ssh <user A>@<host A> <command that maps stdin to clipboard>

কোথায় নিরাপত্তা উদাসীন হতে পারে হয় sshঅনুমতি যার ফলে <user B>উপর host B>থেকে sshমধ্যে host Aএবং চালানো কোনো কমান্ড।

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

ভাগ্যক্রমে, sshএকটি অন্তর্নির্মিত বৈশিষ্ট্য রয়েছে যার নাম কমান্ড সীমাবদ্ধতা বা জোর করে কমান্ড । দেখুন ssh.com , কিংবা এই serverfault.com প্রশ্ন

নীচের সমাধানটি ssh কমান্ড সীমাবদ্ধতা প্রয়োগের সাথে সাধারণ ফর্ম সমাধান দেখায় ।

কমান্ড সীমাবদ্ধতার সাথে সমাধান যুক্ত করুন

এই সুরক্ষা বর্ধিত সমাধানটি সাধারণ ফর্মটি অনুসরণ করে - sshসেশনটির কলটি host-Bকেবল এইভাবে :

cat <file> | ssh <user-A>@<host A> to_clipboard

এর বাকি অংশটি এটির কাজ পেতে সেটআপ দেখায়।

Ssh কমান্ড সীমাবদ্ধতার সেটআপ

ব্যবহারকারীর অ্যাকাউন্ট ধরুন Bহয় user-B, এবং B একটি ssh কী হয়েছে id-clip, যে স্বাভাবিক ভাবেই তৈরি করা হয়েছে ( ssh-keygen)।

তারপর user-Aএর SSH ডিরেক্টরির সেখানে একটি ফাইল

/home/user-A/.ssh/authorized_keys

এটি কীটি সনাক্ত করে id-clipএবং sshসংযোগের অনুমতি দেয় ।

সাধারণত প্রতিটি লাইনের বিষয়বস্তু authorized_keysহ'ল সর্বজনীন কী অনুমোদিত হয়, যেমন, এর বিষয়বস্তু id-clip.pub

তবে, প্রয়োগ করা কমান্ড সীমাবদ্ধতা যে পাবলিক কী সামগ্রীগুলি কার্যকর করা হবে সেই আদেশ দ্বারা (একই লাইনে) চাপ দেওয়া হয়েছে।
আমাদের ক্ষেত্রে:

command="/home/user-A/.ssh/allowed-commands.sh id-clip",no-agent-forwarding,no-port-forwarding,no-user-rc,no-x11-forwarding,no-pty <content of file id-clip.pub>

মনোনীত কমান্ড "/home/user-A/.ssh/allowed-commands.sh id-clip", এবং কেবলমাত্র মনোনীত কমান্ডটি কার্যকর করা হয় যখনই কী id-clipব্যবহার করা হয় আরম্ভ করুন iatessh সাথে সংযোগ করে host-A- কোন আদেশটি কি sshকমান্ড লাইনই লিখিত হয় না

কমান্ডটি একটি স্ক্রিপ্ট ফাইল নির্দেশ করে allowed-commands.shএবং সেই স্ক্রিপ্ট ফাইলটির বিষয়বস্তু

#/bin/bash
#
# You can have only one forced command in ~/.ssh/authorized_keys. Use this
# wrapper to allow several commands.

Id=${1}

case "$SSH_ORIGINAL_COMMAND" in
    "to-clipboard")
          notify-send "ssh to-clipboard, from ${Id}"
        cat | xsel --display :0 -i -b
          ;;
    *)
        echo "Access denied"
        exit 1
        ;;
esac

আসল কল sshমেশিনেB ছিল

... | ssh <user-A>@<host A> to_clipboard

স্ট্রিংটি পরিবেশ পরিবর্তনশীল দ্বারা to-clipboardপ্রেরণ করা allowed-commands.shহয়SSH_ORIGINAL_COMMAND । সংযোজন, আমরা id-clipযে লাইনটি authorized_keysকেবল অ্যাক্সেস করে সেখান থেকে, কীটির নামটি পাস করেছি id-clip

লাইন

          notify-send "ssh to-clipboard, from ${Id}"

ক্লিপবোর্ডটি লেখা হচ্ছে তা আপনাকে জানাতে কেবল একটি পপআপ বার্তা বাক্স - এটি সম্ভবত একটি ভাল সুরক্ষা বৈশিষ্ট্য। ( notify-sendউবুন্টু 18.04 এ কাজ করে, অন্যরা নাও পারে)।

লাইনের মাঝে

cat | xsel --display :0 -i -b

প্যারামিটারটি --display :0প্রয়োজনীয় কারণ প্রক্রিয়াটির নিজস্ব ক্লিপবোর্ডের এক্স এক্স নেই, সুতরাং এটি অবশ্যই স্পষ্টভাবে নির্দিষ্ট করা উচিত। এই মানটি :0ওয়েল্যান্ড উইন্ডো সার্ভারের সাথে উবুন্টু 18.04 এ কাজ করতে দেখা যায়। অন্যান্য সেটআপগুলিতে এটি কাজ নাও করতে পারে। একটি স্ট্যান্ডার্ড এক্স সার্ভারের জন্য এই উত্তর সাহায্য করতে পারে।

host-A /etc/ssh/sshd_config পরামিতি

পরিশেষে /etc/ssh/sshd_configহোস্টের কয়েকটি পরামিতি Aযা সংযোগের অনুমতি নিশ্চিত করতে হবে এবং sshকেবল পাসওয়ার্ড ছাড়াই -কি ব্যবহারের অনুমতি নিশ্চিত করতে হবে :

PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
AllowUsers user-A

করতে sshdসার্ভার কনফিগ পুনরায় পড়া

sudo systemctl restart sshd.service

অথবা

sudo service sshd.service restart

উপসংহার

এটি সেট আপ করার জন্য কিছু চেষ্টা করা হয়েছে, তবে অন্যান্য to-clipboardকাঠামোগুলি একই কাঠামোর সমান্তরালে নির্মিত যেতে পারে।


1
রিমোটফারওয়ার্ডিং সহ এক্সসেল একমাত্র উত্তর যা আমার পক্ষে উবুন্টু 18.04 এ স্থানীয়ভাবে i3 চালিয়ে কাজ করেছিল। কোনও এক্স 11 ফরওয়ার্ডিংয়ের দরকার নেই।
জে স্ট্যানলি

2

@ রিলিগ্যালমগ্রেন সমাধানটি ভাল, তবে পিবিসিপি বিরক্তিকরভাবে শেষ "\ n" চরিত্রটি অনুলিপি করবে, আমি এটি প্রতিরোধ করতে শেষ চরিত্রটি আঁকতে "মাথা" ব্যবহার করি:

#!/bin/bash
head -c -1 |  ssh desktop pbcopy

আমার সম্পূর্ণ সমাধানটি এখানে: http://taylor.woodstitch.com/linux/copy-local-clipboard-remote-ssh-server/


2

সবার সহজ সমাধান, যদি আপনি টার্মিনাল ব্যবহার করে ওএস এক্স এ থাকেন এবং আপনি কোনও রিমোট সার্ভারে ঘুরে দেখছেন এবং কোনও পাঠ্য ফাইল বা লগ বা সিএসভি এর ফলাফলগুলি সহজেই ধরে ফেলতে চান:

1) Cmd-Kটার্মিনালের আউটপুট সাফ করা

2) cat <filename>ফাইলের বিষয়বস্তু প্রদর্শন করতে

3) Cmd-Sটার্মিনাল আউটপুট সংরক্ষণ করতে

আপনার হাতে ফাইলের প্রথম লাইন এবং শেষ লাইনটি ম্যানুয়ালি মুছে ফেলা হবে, তবে অন্য প্যাকেজগুলি ইনস্টল করার জন্য "রিভার্স টানেলস" এবং স্ট্যাটিক আইপি ইত্যাদির উপর নির্ভর করার চেয়ে এই পদ্ধতিটি কিছুটা সহজ etc.


+1 একটি দরকারী কৌশল হিসাবে আমি নিজেকে ব্যবহার করেছি, বিট এটি আপনাকে আপনার টার্মিনাল ইতিহাস হারাতে বাধ্য করে এবং (যেমন উল্লেখ করা হয়েছে) প্রথম / শেষ লাইনের সমস্যাটি কিছুটা মজারভাবে।
অ্যালান স্টর্ম

@ অ্যালানস্টোরমের সাথে সম্মত হয়েছেন
tw0000

এই পদ্ধতির সাথে আরও তাত্পর্যপূর্ণ সমস্যাটি হ'ল এটি কেবলমাত্র আপনার টার্মিনাল বাফার ধরে রেখার সংখ্যা সংরক্ষণ করবে। প্রায়শই এটি কোনও সমস্যা নয় তবে আপনি যদি কোনও লগ ফাইলের বিষয়বস্তু ধরার চেষ্টা করছেন তবে আপনার ক্ষমতা শেষ হতে পারে
শ্রীধর সারনোবাত

এটি সত্য শ্রীধর-সারনোব্যাট, এটি সাধারণভাবে খুব ভাল সমাধান নয়। আমি শুধু ব্যবহার scp!
tw0000
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.