একটি সক্রিয় এসএসএইচ সেশনে একটি ফাইল ডাউনলোড করুন


86

আমি একটি সক্রিয় এসএসএইচ সেশন থেকে একটি ফাইল ডাউনলোড করতে চাই। অনেক ক্ষেত্রে আমি সম্ভবত পারে শুধু এসএফটিপি, ব্যবহার scp, rsyncএট কিন্তু বার যেখানে আমি একটি উপায় আমি এই পদ্ধতি ব্যবহার করা যাবে না দূরবর্তী সার্ভারে অনুমতি উঁচু করেছেন।

আমার অর্থ কী বোঝার জন্য আপনি যদি লড়াই করে চলেছেন তবে কল্পনা করুন যে আপনি /root/বা থেকে কিছু ডাউনলোড করতে চেয়েছিলেন /var/log/auth.log। রুট লগইন অক্ষম করা হয়েছে (কারণ আমরা বোকা নই)। আপনি কিভাবে এই ফাইল পাবেন? এটিকে কোথাও কম সুরক্ষিত করে অনুলিপি করুন এবং তারপরে এটিকে সরাবেন? এটি আড়ষ্ট। এমন দৃশ্যও রয়েছে যেখানে দূরবর্তী পথটি জটিল বা অস্থায়ী বা এমনকি কোনও পথ নয় কারণ আমি স্থানীয়ভাবে সঞ্চিত রিমোট কমান্ডের আউটপুট চাই। রিমোট স্টোর করুন, তারপরে কপি করবেন? দুটো ধাতব পদার্থের ঠোকাঠুকিতে যেরকম শব্দ হয়!

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

$oli@remote: cp /root/cheesecake /local/

এবং এটি আমার স্থানীয় প্রদর্শিত হয় cwd। এবং দ্বি নির্দেশমূলক অ্যাক্সেস কোনও খারাপ জিনিস হবে না।


আমি এই প্রশ্নটি জিজ্ঞাসা করার পরে দীর্ঘ আট বছর হয়ে গেছে এবং আমরা একটি প্রকৃত পরিসীমা দেখেছি, তবে এটি এখনও একটি সমস্যা রয়ে গেছে যে আমি এখনও মাঝে মাঝে লড়াই করে যাচ্ছি।

আমি প্রশ্নটি অনেক বেশি আদর্শবাদী কিছুতে রিফ্যাক্টর করেছি। আমি পুরোপুরি বুঝতে পারি যে বর্তমানে কোনও নিখুঁত উত্তর নাও থাকতে পারে। আমার আদর্শের দিকে সমস্ত অতীত এবং ভবিষ্যতের প্রচেষ্টা প্রশংসা করা হয়।


1
মজার প্রশ্ন! এটি সত্যিই দেখায় যে কীভাবে বোধগম্য করার বিষয়ে মানুষের ধারণাগুলি তারা যে সরঞ্জামগুলি ব্যবহার করে তা আকার দেয়। zsshআপনি সম্ভবত মনে রাখবেন যে জেমোডেম-এর মতো ওয়ার্কফ্লো সবচেয়ে কাছাকাছি।
পুলি

1
আমি সত্যিই অবাক হয়েছি যে 8 টি উত্তর থাকা সত্ত্বেও এটি করার কোনও উপায় নেই
এন্ডোলিথ

উত্তর:


34

আপনি zssh যাচাই করতে চাইতে পারেন , যা মহাবিশ্বে উপলব্ধ এবং তাই এর সাথে উপলভ্য

sudo apt-get install zssh

আপনার এটি আপনার উবুন্টু সার্ভারে এবং আপনার ক্লায়েন্টে প্রয়োজন, তবে মূলত zssh এর সাহায্যে লগ ইন করার পরে আপনি কেবল 'ctrl- @' টিপুন এবং এটি "ফাইল ট্রান্সফার মোড" এনেছে যা আপনাকে পাইপের নিচে ফাইলগুলি প্রেরণ করতে দেয় ক্লায়েন্ট মেশিন, বা ক্লায়েন্ট থেকে সার্ভারে আপলোড করুন।

তবে আপনাকে স্কিপ করতে পুনরায় লেখক বা নতুন উইন্ডো খুলতে হবে না।

আপনি যদি ssh কী এবং একটি ssh এজেন্ট ব্যবহার করে থাকেন তবে আপনি সহজেই তা করতে পারেন:

[enter]~[ctrl]-Z

যা ব্যাকগ্রাউন্ড ssh করবে এবং তারপরে ঠিক scp $!:/whatever/whatever .'

ফাইলটি স্থানান্তরিত হয়ে গেলে, fgএসএসএস ফিরে পেতে।

আপনি যদি ssh কী ব্যবহার করছেন না, আপনি এখনও "কন্ট্রোলমাস্টার" এবং "কন্ট্রোলপথ" বিকল্পগুলি সাম্প্রতিক ওপেনএসএইচ সংস্করণগুলিতে যুক্ত করতে পারেন, তবে এটি জটিল হয়ে ওঠে, man ssh_config দেখুন


24

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

  • Enter ~C Enter -R 22042:localhost:22 Enterআপনার সার্ভার থেকে আপনার ডেস্কটপে একটি বিপরীত পোর্ট ফরওয়ার্ডিং তৈরি করতে টাইপ করুন (22042 যে কোনও পোর্ট নম্বর 1024 এবং 65534 এর মধ্যে নাও হতে পারে)।
  • তারপরে সার্ভারে আপনার বর্তমান ডিরেক্টরিতে scp -P 22042 foo localhost:ফাইলটি fooডেস্কটপে আপনার বাড়িতে অনুলিপি করবে ।
  • এখন Enter ~ Ctrl+ টাইপ করে ডেস্কটপে আপনার বর্তমান ডিরেক্টরিতে ফাইলটি সরান Z mv ~/foo . Enter fg Enter

এসএস অব্যাহতি ক্রম দিয়ে শুরু ~; টিলড কেবল একটি নতুন লাইনের পরে স্বীকৃত। ~ Ctrl+Zপটভূমিতে ssh রাখে। ~Cএকটি কমান্ড লাইনে প্রবেশ করে যেখানে আপনি একটি ফরোয়ার্ডিং তৈরি বা মুছতে পারবেন।


1
এনক্রিপশন এবং সংক্ষেপণের 2 স্তর ব্যবহার করা কিছুটা ওভারকিল, সে কারণেই আমি "ব্যাক লিঙ্ক" এর জন্য র‌্যাশ বা এফটিপি ব্যবহার করার পরামর্শ দিয়েছিলাম।
জানু

2
@ জ্যানসি: এর জন্য আরও সেটআপ প্রয়োজন: আপনাকে একটি আরশ বা এফটিপি সার্ভার ইনস্টল করতে হবে, এবং নিশ্চিত করতে হবে যে এটির কনফিগারেশনটি নিরাপদ। এনক্রিপশনের ওভারহেড এমনকি একটি নেটবুকেও ন্যূনতম।
গিলস

ডিফল্টরূপে একটি ssh- সার্ভার ইনস্টল করা হয় না। ;)
জানু

@ জ্যানসি: এসএসএসের আরেকটি সুবিধা হ'ল আপনি যদি এজেন্ট ফরওয়ার্ডিং সক্ষম করে থাকেন তবে অনুলিপিটি করতে আপনাকে কোনও পাসওয়ার্ড টাইপ করতে হবে না। কম্পিউটিং মাইক্রো দক্ষতার উপর কর্মপ্রবাহ দক্ষতা।
গিলস

আপনি অবশ্যই (কিছু) অন্যান্য পরিষেবার সাথে অবশ্যই এমন কিছু করতে পারেন। যাই হোক না কেন, এখানে একাধিক অনুরূপ সমাধান রয়েছে যার মধ্যে একটি প্রত্যয়যুক্ত সংযোগ স্থাপন এবং একটি অতিরিক্ত ডেমন ...;) অন্তর্ভুক্ত রয়েছে
জানক

10

আমি স্ট্যান্ডার্ড এসএসএস দিয়ে এটি করার একটি উপায় নিয়ে এসেছি। এটি এমন একটি স্ক্রিপ্ট যা বর্তমান এসএসএস সংযোগটি সদৃশ করে, দূরবর্তী মেশিনে আপনার কার্যকরী ডিরেক্টরিটি সন্ধান করে এবং আপনি স্থানীয় মেশিনে উল্লিখিত ফাইলটি অনুলিপি করে। এটির জন্য আপনার ssh কনফিগারেশনে 2 টি খুব ছোট স্ক্রিপ্ট (1 টি দূরবর্তী, 1 স্থানীয়) এবং 2 টি লাইন প্রয়োজন। নিম্নরূপ পদক্ষেপ:

  1. এই 2 লাইন আপনার যুক্ত করুন ~/.ssh/config:

    ControlMaster auto
    ControlPath ~/.ssh/socket-%r@%h:%p
    

    এখন আপনার কাছে মেশিনএক্স ওপেনের সাথে এসএসএস সংযোগ থাকলে অন্য একটিটি খোলার জন্য আপনার পাসওয়ার্ড প্রয়োজন হবে না।

  2. কল করা রিমোট মেশিনে 1-লাইনের স্ক্রিপ্ট তৈরি করুন ~/.grabCat.sh

    \#!/bin/bash<br>
    cat "$(pwdx $(pgrep -u $(whoami) bash) | grep -o '/.*' | tail -n 1)"/$1
    
  3. স্থানীয় মেশিনে script / .grab.sh নামে একটি স্ক্রিপ্ট তৈরি করুন

    \#!/bin/bash
    [ -n "$3" ] && dir="$3" || dir="."
    ssh "$1" ".grabCat.sh $2" > "$dir/$2"
    
  4. এবং ( ~/.bashrcবা যে কোনও জায়গায় ) দখল করার জন্য একটি উপাধি তৈরি করুন :

    alias grab=~/.grab.sh
    

এটাই, সব হয়ে গেছে। এখন আপনি লগ ইন থাকলে machineX:/some/directory, কেবল একটি নতুন টার্মিনাল চালু করুন এবং টাইপ করুন

grab machineX filename

এটি আপনার স্থানীয় ওয়ার্কিং ডিরেক্টরিতে স্থানীয় মেশিনে ফাইল রাখে। "দখল" এর তৃতীয় যুক্তি হিসাবে আপনি আলাদা অবস্থান নির্দিষ্ট করতে পারেন।

দ্রষ্টব্য: স্পষ্টতই উভয় স্ক্রিপ্ট অবশ্যই "এক্সিকিউটেবল" হতে হবে, অর্থাৎ chmod u+x filename


আকর্ষণীয়, আপনি কীভাবে এটি কাজ করে তা ব্যাখ্যা করতে পারেন? ফাইলগুলি "দখল" করার পাশাপাশি সমর্থন করার জন্য আপনি কি এটি প্রসারিত করতে সক্ষম?
পিটার গিবসন

5

আপনার ক্লায়েন্ট মেশিনকে (আপনি যে মেশিনে বসে আছেন) তাকে মেশিনএ এবং আপনি যে মেশিনে বর্তমানে এসএসএইচড রয়েছেন তাকে মেশিন বি মেশিনএ বলা হয়, আপনার স্থানীয় মেশিনে অবশ্যই এসএসএইচডি চলমান এবং পোর্ট 22 খোলা থাকতে হবে। তারপর:

scp myfile machineA:

কপি myfilemachineA আমার MachineA হোম ডিরেক্টরিতে MachineB উপর। এটি ধরে নিয়েছে ইউজারআইডি / পাসওয়ার্ড একই।

scp myfile machineA:/newdir/newname

কপি myfileকরার জন্য এক MachineB /newdir/newnamemachineA উপর। এটি ধরে নিয়েছে ইউজারআইডি / পাসওয়ার্ড একই।

scp MachineA:/path/to/my/otherfile . 

otherfileমেশিনএ-তে আমার মেশিনএ ডিরেক্টরি থেকে একটি অনুলিপি পেয়েছে এবং এটি আমার বর্তমান ওয়ার্কিং ডিরেক্টরিতে মেশিনবি মেশিনে রাখে ("বিন্দু" (।) চরিত্র দ্বারা মানিক ইউনিক্স ফ্যাশনে মনোনীত)। এটি ধরে নিয়েছে ইউজারআইডি / পাসওয়ার্ড একই।

যদি ইউজারিড / পাসওয়ার্ড একই না থাকে তবে ব্যবহার করুন:

scp myfile user@MachineA: ফাইল পেতে।

scp user@MachineA:/path/to/my/otherfile . ফাইল লাগাতে

এসসিপি সম্পর্কে নোট:

cpকমান্ডের মতো , scpঅনুলিপিটিতে অনুলিপি ফাইলের অনুমতি সেটিংস প্রচার করার জন্য একটি -p বিকল্প রয়েছে (অন্যথায় অনুলিপি নতুন ফাইলগুলির জন্য সাধারণ সেটিংস সহ তৈরি করা হয়), এবং একটি-ডিরেক্টরিতে একটি ডিরেক্টরি ডিরেক্টরি ট্রি অনুলিপি করার জন্য কমান্ড।

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


2

আপনি যদি ssh- এর মাধ্যমে সার্ভারটি অ্যাক্সেস করেন তবে আপনি sftp এর মাধ্যমেও সংযোগ স্থাপনের ক্ষমতা পাবেন। ফাইলজিলা ক্লায়েন্টকে (জিইউআই) সহজ রাখুন এবং আপনি বর্তমানে যে পথে রয়েছেন তা আটকে দিন

এখানে চিত্র বর্ণনা লিখুন


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

2

যদি আপনার ফাইল যথেষ্ট ছোট হয় তবে আপনি এটিকে বেস 64 এর সাথে এনকোড করতে পারেন এবং তারপরে এটিকে স্থানীয়ভাবে ডিকোড করতে পারেন:

remote.example.net ample বেস64 <মাইফাইল
 (আউটপুট অনুলিপি করুন)
স্থানীয়.example.net $ বেস64 -d> মাইফিল
 (আউটপুট অনুলিপি করুন)
Ctrl +D

আসল উত্তরটি আমি কোথায় পেয়েছি (এবং এটি পরীক্ষা করে দেখেছি): https://unix.stackexchange.com/a/2869/194134


কোন কিছুর সাথে এর কী আছে? আপনার স্কাইপ ইত্যাদির সাহায্যে ফাইলগুলি এনক্রিপ্ট করার দরকার নেই
HörmannHH

1

এটি সক্রিয় এসএসএইচ সংযোগের ওপরে নয়, এসএসপি- র মতো একই পদ্ধতি এবং অনুমতিগুলি ব্যবহার করে স্কিপি ফাইলগুলি অনুলিপি করে।


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

এছাড়াও এটি sftp দ্বারা চালিত হয়েছিল (আমার উত্তর দেখুন)
অলিভিয়ার লালনডে

@ অলি - যেহেতু লেনদেনের উভয় প্রান্তই * নিক্স বাক্স, তাই সম্ভবত তাদের উভয়ই sshdচলমান রয়েছে এবং সুতরাং scpক্লায়েন্টের কাছে ফাইলগুলি ফেলে দেওয়ার জন্য আপনার সার্ভারের কমান্ড লাইনে ব্যবহার করতে সক্ষম হওয়া উচিত । ঘোরাঘুরি করার মতো অনেক জাদু আছে; কখনও কখনও আমাদের এখনও বোতাম টিপতে হবে। ফাইলজিলা সমাধানটিও সহজ।
জেরোবান্ডউইথ

1

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


অথবা পারা শুধু scp কমান্ড / rsync ...
HörmannHH

1

konsole আপনি কোনও দূরবর্তী সেশনে (বা Ctrl-Alt-U) থাকাকালীন "সম্পাদনা-> জেডমডেম আপলোড" মেনুয়ের মাধ্যমে সেই ক্ষমতাটি রয়েছে।

দয়া করে নোট করুন: প্যাকেজটি lrzszপ্রথমে ইনস্টল করা উচিত। আমার কাছে দেখে মনে হচ্ছে কেবল ASCII ফাইল আপলোড করার জন্য কাজ করে।


0

যেহেতু আপনি একটি ডেস্কটপ থেকে সংযোগ করছেন, আমার ধারণা আপনি দ্বিতীয় টার্মিনালটি খুলতে পারেন।

আমি প্রায়শই এইভাবে করি:

  • প্রথম টার্মিনাল থেকে, এক যেখানে SSH অধিবেশন চলছে, আমি ফাইল আমি পেতে, যেকোন একটি ব্যবহার করে প্রয়োজন পূর্ণ পাথ পেতে realpath myfileবা readlink -f myfile(পুরনো উবুন্টু রিলিজ ইনস্টল নেই realpath) এবং কপি করুন।
  • দ্বিতীয় টার্মিনাল থেকে আমি ব্যবহার করি scpবা sftpফাইলটি পেতে, আমার আগে পাওয়া পুরো পাথটি আটকে। উদাহরণ স্বরূপ:scp user@host:/etc/some/file ./

এটি বেশ বেসিক, তবে এটি মনে রাখাও সহজ এবং কাজ করার জন্য কোনও অতিরিক্ত প্যাকেজের প্রয়োজন নেই।

প্রথম টার্মিনাল থেকে পুরো পাথ পান এবং তারপরে দ্বিতীয় টার্মিনালে পেস্ট করুন


"রুট ফাইল পাওয়ার চেষ্টা করা এবং রুট দ্বারা সরাসরি লগ ইন করার অনুমতি দেওয়া হয় না" প্রশ্নটিতে উত্থাপিত সমস্যাটিকে সহায়তা করে না।
অলি

0

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

আপনার যা যা প্রয়োজন তা হ'ল অ্যাপেট-ইনস্টল এমসি (মহাবিশ্ব থেকে)

তারপরে, এমসি চালান, বাম বা ডান প্যানেলের জন্য মেনু খুলুন, শেল সংযোগটি নির্বাচন করুন, ব্যবহারকারীর নাম @ রিমোট-আইপি, পাসওয়ার্ড লিখুন - আসলে, এটি .. ফাইল / ফোল্ডারগুলি একটি মেশিন থেকে অন্য মেশিনে অনুলিপি করুন (এখানে ডাউনলোড করুন) F5, F6 এর সাথে সরান এবং আরও নীচের বোতাম অনুসারে। পুরানো এমএস-ব্যবহারকারীদের জন্য: ডসের জন্য ঠিক এনসির মতো


-2

লোকেরা এটিকে বোঝাচ্ছে না। আমি গভীর, অন্ধকার, জটিল সব উত্তরও খুঁজছিলাম। দেখা যাচ্ছে, ডলফিন থেকে আপনি ডানদিকে সরাসরি এটি করতে পারেন। মাছ: // ব্যবহারকারীর নাম @ সার্ভার: পোর্ট


আমি এটি পাই না
পিয়ের.ভ্রিয়েন্স

আমি মনে করি না আপনি আমার ব্যবহারের বিষয়টি বুঝতে পেরেছেন। আমি একটি সক্রিয় এসএসএইচ কমান্ড লাইন সেশনে রয়েছি এবং একটি স্থানীয় সম্ভাব্য সুবিধাযুক্ত, অর্থাৎ এসএফটিপি-র উপরে উপলব্ধ নয়) অবস্থান থেকে আমার স্থানীয় কম্পিউটারে একটি ফাইল পাঠাতে চাই। এটি তার জেনেসিসে কোনও ফাইলও নাও হতে পারে, এটি কমান্ড আউটপুটও হতে পারে। মধ্যস্থতাকারী ফাইলগুলি তৈরি না করে এবং নতুন এসএফটিপি / এসসিপি / ইত্যাদি সেশনগুলি শুরু না করে এটিকে আবার পাইপ করার জন্য আমি কোনও উপায় সন্ধান করছি।
অলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.