আমি কীভাবে ssh- এজেন্টকে ssh এর উপর এবং tmux (OS X এ) কাজ করতে পারি?


17

আমার গিথুব অ্যাকাউন্টের জন্য আমার একটি প্রাইভেট কী সেট আপ হয়েছে, আমি বিশ্বাস করি যে ওএস এক্স এর কীচেইনে সঞ্চিত পাসফ্রেজ। আমি যখন টার্মিনাল উইন্ডোটি খুলি এবং প্রবেশ করি তখন অবশ্যই এটি টাইপ করতে হবে না ssh git@github.com

যাইহোক, যখন আমি কোনও এসএস সেশনে বাশ চালাচ্ছি, বা স্থানীয়ভাবে কোনও টিএমউक्स সেশনের অভ্যন্তরে, প্রতিবার আমি গিথুব চালানোর চেষ্টা করার সময় আমাকে পাসফ্রেজ টাইপ করতে হবে।

এই প্রশ্নটি পরামর্শ দেয় যে স্ক্রিনের সাথে একই ধরণের সমস্যা উপস্থিত রয়েছে, তবে আমি টিএমউক্সে এটি ঠিক করার মতো সমস্যাটি সত্যিই বুঝতে পারি না। এই পৃষ্ঠাতে এটিও রয়েছে যা মোটামুটি জটিল সমাধান অন্তর্ভুক্ত করে তবে zsh এর জন্য।

সম্পাদনা :

@ মাইকেলের উত্তরের প্রতিক্রিয়াতে , একটি স্থানীয় টার্মিনাল থেকে আমি নিম্নলিখিত আউটপুটটি পাই:

[~]
$ echo $SSH_AUTH_SOCK
/tmp/launch-S4HBD6/Listeners
[~] 
$ ssh-add -l
2048 [my key fingerprint] /Users/richie/.ssh/id_rsa (RSA)
[~]
$ typeset -p SSH_AUTH_SOCK
declare -x SSH_AUTH_SOCK="/tmp/launch-S4HBD6/Listeners"

যেখানে ssh ও tmux এ আমি পাই:

[~]
$ echo $SSH_AUTH_SOCK

[~]
$ ssh-add -l
Could not open a connection to your authentication agent.
[~]
$ typeset -p SSH_AUTH_SOCK
bash: typeset: SSH_AUTH_SOCK: not found

echo $SSH_AGENT_PID আমি যে শেলটি চালাই তা কিছুই ফিরিয়ে দেয় না।


কি হবে typeset -p SSH_AUTH_SOCK?
মাইকেল

@ মাইকেল bash: typeset: SSH_AUTH_SOCK: not foundssh / tmux এর মধ্যে থেকে। প্রয়োজনে আমি আজ রাতে স্থানীয়ভাবে চেষ্টা করব।
ধনী

@ মাইকেল আমি এই কমান্ডের আউটপুট প্রশ্নের সাথে যুক্ত করেছি।
ধনী

আফাইক, প্রশ্নোত্তরগুলি ওএস এক্স-নির্দিষ্ট নয়। যে কিছু অ OS X এর-নির্দিষ্ট dups, যথা এড়াতে প্রাসঙ্গিক superuser.com/q/334975/46794 এবং superuser.com/q/479796/46794
ব্লেজারব্লেড

@ ব্লাইজারব্ল্যাড আমি এই ছাপের মধ্যে ছিলাম যে আমার পাসফ্রেজটি ওএস এক্স কীচেইনে সংরক্ষিত ছিল (যদিও আমি এখন মনে করতে পারছি না কেন আমি বিশ্বাস করি যে এটি কেস হবে)। এটা কি ভুল?
ধনী

উত্তর:


4

আমার সহকর্মী লাইভ এজেন্ট সন্ধানে সহায়তা করার জন্য কিছু বাশ ফাংশন তৈরি করেছেন: https://github.com/wwalker/ssh-find-agent

তিনি এটি মূলত সিস্টেমে (ল্যাপটপ থেকে ডেস্কটপ ইত্যাদির) সংযোগের জন্য ব্যবহার করেন তবে আমি এটি প্রায়শই স্থানীয় টিএমউक्स সেশনের জন্য ব্যবহার করি যেখানে আপনি নিজের উইন্ডো ম্যানেজার থেকে লগ আউট করে থাকেন (নিজের জন্য ওএস এক্স)।

ব্যবহার

  1. Ssh-find-এজেন্ট.বাশ ( git clone git://github.com/wwalker/ssh-find-agent.gitকর্ম) ডাউনলোড করুন ।

  2. নিম্নলিখিতগুলি ~ / .bashrc এ যুক্ত করুন:

    . /path/to/ssh-find-agent.bash
    
  3. তারপরে আপনি আপনার বর্তমান শেলটিতে SSH_AUTH_SOCK সেট করতে নিম্নলিখিত টাইপ করতে পারেন:

    set_ssh_agent_socket
    

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

8

একটি মার্জিত সমাধান, ড্যাগিট.ও থেকে নেওয়া :

সৃষ্টি ~/.ssh/rc

#!/bin/bash
if [ -S "$SSH_AUTH_SOCK" ]; then
    ln -sf $SSH_AUTH_SOCK ~/.ssh/ssh_auth_sock
fi

যোগ করা ~/.tmux.conf

set -g update-environment "DISPLAY SSH_ASKPASS SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY"
set-environment -g 'SSH_AUTH_SOCK' ~/.ssh/ssh_auth_sock

7

আপনার .tmux.confকনফিগারেশন ফাইলে, এই লাইনটি যুক্ত করুন:

সেট-জি আপডেট-এনভায়রনমেন্ট "এসএসএইচ_এএসকেপাস এসএসএইচ_এইউথ_সক এসএসএইচ_এজিডিপিডি এসএসএইচ_সিএনএনএকশন"

এর ফলে এই এনভায়রনমেন্ট ভেরিয়েবলগুলি আপনার মূল শেল থেকে tmux এর মধ্যে খোলা যে কোনও শেলগুলিতে অনুলিপি করা যায়, যার ফলে ssh-এজেন্ট সেই tmux শেলের মধ্যে সঠিকভাবে কাজ করতে দেয়।


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

1
এইচএম .. আরও খনন করার পরে, আমি সম্মত হই - আমি তালিকাবদ্ধ সেটিংসটি ডিফল্টদের মধ্যে ইতিমধ্যে রয়েছে এবং আমি যদি .tmux.conf ফাইল ছাড়াই tmux চালনা করি তবে সবকিছু ঠিকঠাকভাবে কাজ করে। এবং আমি যদি আমার .tmux.conf ফাইল থেকে উদ্ধৃত লাইনটি সরিয়ে ফেলি তবে তা আমার পক্ষেও কাজ করছে, যদিও এটি আগে হয়নি। মাঝে মাঝে অন্য কিছু ভুল হচ্ছে clearly হতে পারে স্থগিত / পুনরুদ্ধার বা সংযুক্ত / বিচ্ছিন্ন অথবা একটি টিএমউक्स সেশনে দূরবর্তীভাবে ছোটাছুটি করতে। আমি আমার চোখ খোলা রাখব এবং আপডেট করব যদি আমি এমন ফ্যাক্টর পাই যা এটি পুনরুত্পাদনযোগ্য করে তোলে।
ট্রেভর পাওয়েল

update-environmentসঠিকভাবে সেট করা আছে। তবে, সমস্যাটি এখনও দেখা দেয়।
ধনী

2
এটির সাথে সমস্যাটি হ'ল কনফিগারেশনটি কেবল তখনই কার্যকর করা হবে যখন কোনও tmuxসার্ভার উপস্থিত না হয়ে পুনরায় সংযুক্তির উদ্দেশ্যকে অস্বীকার করে ... সম্ভবত সেই পরিবর্তনগুলি পুনরায় আপডেট করার জন্য কোনও কমান্ড লাইন সুইচ রয়েছে?
টোবিয়াস কেইনজলার

3

আমার ক্ষেত্রে এটি ঘটেছিল যে ওএস এক্স থেকে এসএসএসের মাধ্যমে সংযোগ স্থাপন করার সময় প্যানগুলি ঠিকঠাক কাজ করার পরে আমার পাসফ্রেজ জিজ্ঞাসা করতে শুরু করেছিল। Http://santini.di.unimi.it/extras/ph/my-tmux-setup.html থেকে এই লাইনটি চুরি করে ফেলার জন্য আমি একটি উপায় পেয়েছি

eval $(tmux show-environment -t [YOUR-SESSION] | grep '^SSH_AUTH_SOCK')

অভিযোগ করা ফলকটি থেকে কেবল এটি চালান।


2

আপনি বাশ বা অন্য কোনও শেল ব্যবহার করছেন কিনা তা নিশ্চিত নন, তবে এই লোকটির tmux সেটআপ দেখে মনে হচ্ছে এটি ব্যাশের জন্য কাজ করবে। ব্যক্তিগতভাবে, আমি ওহ-মাই-জেডএস-এর সাথে zsh ব্যবহার করছি এবং আমি খুঁজে পেলাম যে আমি যোগ করার পরে এসএমএস-এজেন্ট tmux এ কাজ শুরু করে

zstyle :omz:plugins:ssh-agent agent-forwarding on

আমার .zshrc ফাইলটিতে এবং আমার চলমান zsh সেশনে কনফিগারটি পুনরায় লোড করেছে। আমি এই লোকটির zsh-oriented সমাধানও খুঁজে পেয়েছি তবে এটি আমার পক্ষে অপ্রয়োজনীয় বলে প্রমাণিত হয়েছিল।


1

কি করে:

echo $SSH_AUTH_SOCK
echo $SSH_AGENT_PID
ssh-add -l

ছাপা?

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


আমি এই কমান্ডের প্রতিক্রিয়াটি প্রশ্নের সাথে যুক্ত করেছি। আমি আরও বুঝতে পেরেছি যে আমি যখন ssh (tmux ব্যবহার না করে) লগইন করেছি এবং তদনুসারে প্রশ্নটি সম্পাদনা করেছি তখনও সমস্যাটি দেখা দেয়।
ধনী

4
sshসহজ. এজেন্ট ফরোয়ার্ডিং চালু করুন। এটি করার সহজতম উপায়টি ssh -Aপরিবর্তে চালিত হয় ssh। একটি উপনাম ব্যবহার করুন যাতে আপনাকে প্রতিবার এটি টাইপ করতে হবে না বা এটি আপনার নিজের মধ্যে রাখতে হবে .SSH/config
মাইকেল

শীতল ধন্যবাদ. যে ssh জন্য কাজ করে। টিএমউক্সে কীভাবে এটি ঠিক করবেন?
ধনী

0

অনেকগুলি সমাধান রয়েছে, তবে সহজতম একটি হ্যানস জিঞ্জেলের জবাব, ২৮ জানুয়ারী ২০১ 2014 তারিখে সম্পর্কিত স্ট্যাকওভারফ্লো প্রশ্নে 8 জানুয়ারী 2016 তারিখে পাওয়া গেছে । কেবল আপনার শেল ~/.profileবা অনুরূপতে নিম্নলিখিতগুলি যুক্ত করুন :

alias ssh='eval $(tmux show-env -s | grep "^SSH_") && ssh'

মাল্টি-লাইন ফাংশনগুলি সংজ্ঞায়িত করার বা নতুন অস্থায়ী ফাইল তৈরি করার দরকার নেই। আপনি যদি উপনামটি না চান ssh, কেবল এটিকে পরিবর্তন করুন fixsshএবং && sshশেষে সরিয়ে ফেলুন , এবং fixsshযখনই আপনি sshপুনরায় সংযুক্ত টমাক্স সেশনের অভ্যন্তর থেকে চালানোর চেষ্টা করছেন তখন চালান ।

হান্স জিনজেলের উত্তরটি পরামর্শ দেয় যে চালানোর জন্য tmux এর একটি 'নতুন সংস্করণ' প্রয়োজন show-env -s। Tmux 2.7 আমার জন্য এই কাজ, এবং আমার পড়া উপর পরিবর্তণের , -s3 জুন 2008 মাত্র tmux 0.3 মুক্তির আগে যোগ করা হয়েছিল। tmux 2.3 (29 সেপ্টেম্বর 2016) দেবিয়ান স্থিতিতে রয়েছে।

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