আমি কীভাবে ইতিমধ্যে ফরমেড এসএস কী টিএমএম-তে ফরোয়ার্ড করতে পারি?


15

আমি এমন একটি মেশিন থেকে এসএসএইচ দিয়ে সংযোগ করছি যেখানে আমার কীগুলি সংরক্ষণ করা হয়েছে, দ্বিতীয় মেশিনে ফরোয়ার্ড করা হচ্ছে, এবং তারপরে tmux এর মধ্যে থেকে কীগুলি ব্যবহার করার চেষ্টা করুন। Tmux প্রবেশ করার সময় আমি ফরোয়ার্ডিং "looseিলে" প্রদর্শিত হবে। কীভাবে "আবার ফরওয়ার্ড" করা যায় যাতে আমি টিএমউক্সের মধ্যে থেকে আমার কীগুলি ব্যবহার করতে পারি?

$ ssh [server] -o ForwardAgent=yes
$ git pull       # Succeeds.
$ /bin/bash
$ git pull       # Still succeeds, despite new shell.
$ exit
$ tmux attach
$ git pull       # Permission denied (publickey)

আমি নিশ্চিত আপনি যদি আপনার সমস্ত সেশনের মধ্যে ভাগ করে নেওয়া কোনও এজেন্ট চালু করেন তবে এটি কার্যকর হয়। Bose.utmb.edu/Compu_Center/ssh/SSH_HOWTO.html > এসএস -এজেন্ট প্রক্রিয়া কনফিগার করুন এ নথিটি এই ফলাফলটি অর্জনের জন্য একটি পদ্ধতি ব্যাখ্যা করে।
ডেরিকসন

এছাড়াও প্রাসঙ্গিক: unix.stackexchange.com/questions/75681/…
জো

উত্তর:


12

আপনি যদি ইতিমধ্যে বিদ্যমান টিএমউक्स সেশনটি সংযুক্ত করছেন তবে শেলটি আপনার লগইন শেল থেকে পরিবেশের পরিবর্তনগুলি উত্তরাধিকার সূত্রে প্রাপ্ত নয়। বিশেষত, এটি ssh এজেন্ট পরিবেশের ভেরিয়েবলের উত্তরাধিকারী হবে না।

এই ঠিক করার চেষ্টা করুন :

  1. এই স্ক্রিপ্টটি তৈরি করুন এবং এটি OME হোম / .এসএসএইচ / সেভেজেন্টে রেখে দিন

    #!/bin/sh
    SSHVARS="SSH_CLIENT SSH_TTY SSH_AUTH_SOCK SSH_CONNECTION DISPLAY"
    
    for var in ${SSHVARS} ; do
      echo "export $var=\"$(eval echo '$'$var)\""
    done 1>$HOME/.ssh/latestagent
  2. এটি আপনার শেল স্টার্টআপ স্ক্রিপ্টে যুক্ত করুন। উদাহরণস্বরূপ আপনি যদি ব্যাশ ব্যবহার করেন:

    echo '. ~/.ssh/saveagent' >> ~/.bash_login
  3. Tmux সংযুক্ত করার পরে, চালান . $HOME/.ssh/latestagent

আরও দেখুন এসএসএইচ এর মাধ্যমে সংযুক্ত হওয়ার সাথে সাথে আমি কীভাবে স্ক্রিপ্টটি চালাতে পারি? এবং tmux সেশনে সংযুক্ত করুন এবং একটি কমান্ড চালান


1
আপনি অন্য শেল শেলের সাথে সামঞ্জস্য করার চেষ্টা করতে পারলে হয়তো প্রফাইলে প্রেরণ করুন।
ডেরিকসন

2
দুর্দান্ত উত্তর! , এনভায়রনমেন্ট ভেরিয়েবল খালি জায়গা থাকা কিছু তাই গত সামনে লাইনে - A: কয়েক বিষয় আমি গাড়ীতে আঘাত saveagentস্ক্রিপ্ট হওয়া উচিত: echo "export $var=\"$(eval echo '$'$var)\""। বি - এর পরিবর্তে latestagentস্ক্রিপ্টটি কল করা উচিত , সুতরাং ভেরিয়েবলগুলি সেট করা কলিং শেলকে প্রভাবিত করবে। সি - tmux সংযুক্ত করার পরে স্ক্রিপ্টটি স্বয়ংক্রিয়ভাবে কল করা এখানে বর্ণিত পদ্ধতিটির মাধ্যমে সম্পন্ন করা যেতে পারে: unix.stackexchange.com/questions/86925/…sourceshlatestagent
জো

ধন্যবাদ @ জো, আমি আপনার উত্তরগুলি সংশোধন করে আপনার উন্নতিগুলি অন্তর্ভুক্ত করেছি।
GnP

0

আপনি যদি প্রতিটি শেলটিতে আপনার প্রয়োজনীয় সমস্ত ভেরিয়েবল সমন্বিত কোনও স্ক্রিপ্ট উত্স না করতে চান তবে আপনি একই tmuxসার্ভার সেশন দ্বারা উদ্ভূত নতুন শেলটিতে আরও স্প্যান করতে পারবেন, আপনি সম্ভবত কমান্ডটি tmuxদিয়ে ভেরিয়েবলগুলি সেশন বা বৈশ্বিক পরিবেশে রাখার কথা বলতে চাইবেন set-environment। উদাহরণস্বরূপ (বাশের জন্য):

for var in DISPLAY SSH_AUTH_SOCK ...; do
    tmux setenv "$var" "${!var}"
done

-gঅন্য সেশনেও এটি চাইলে পতাকাটি যুক্ত করতে এবং আপনি -t <session>যদি বাইরে থেকে চালাচ্ছেন তবে তা ব্যবহার করতে ভুলবেন না tmux


0

অন্যান্য উত্তরগুলি এখানে পড়ার পরে, আমি ঠিক করেছি আমার সরকারী / ব্যক্তিগত কীপায়ারটি কেবল রিমোট সার্ভারে অনুলিপি করব, যাতে এজেন্টের ফরওয়ার্ডিং সম্পর্কে আমাকে আর চিন্তার দরকার পড়বে না।

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