এসএসএইচ ব্যবহার করে যে শেলটি বেছে নিচ্ছেন?


31

যখন কোনও সার্ভারে কোনও এসএসএইচ ব্যবহার করা হয় তখন আমি কীভাবে শেলটি সেট করব। উদাহরণস্বরূপ আমি বেস স্ট্যান্ড করতে পারছি না এবং জেডএসএইচ ব্যবহার করতে হবে, আমি কীভাবে এটি তৈরি করব যাতে .zsh_profileআমি যখন মেশিনে ছিড়ে যাই তখন আমার প্রোফাইলের সাথে জেডএসএইচ লোড হয় ( )।

আমি ssh এর সাথে একগুচ্ছ প্যারামিটারগুলি পাস করতে চাই না, আমি কি ডিফল্ট শেলটি সেট করতে পারি না?

উত্তর:


34

ধরে নিই যে আপনি লিনাক্সে চলেছেন, আপনি chshকমান্ডটি ব্যবহার করতে পারেন ।

chsh -s /bin/ksh foo
chsh -s /bin/bash username

4
দয়া করে নোট করুন যে /etc/shellsশেলটি নির্বাচনযোগ্য হওয়ার জন্য বাইনারি যাওয়ার পথটি থাকতে হবে।
কিমভাইস

উবুন্টু 16.04 এর এই আদেশ নেই।
ডেভিড.প্রেজ

@ david.perez হ্যাঁ এটা মধ্যে করে, প্যাকেজpasswd
মিষ্টি

LDAP এর মাধ্যমে প্রমাণীকরণ হ্যান্ডেল করা হলে এটি কাজ করে না
ড্যানিয়েল কেটস

10

man chsh শেল পরিবর্তন করে, সবসময় কাজ করে না

বিকল্পভাবে, আপনি exec /bin/zshআপনার ব্যাশ লগইন স্ক্রিপ্টে আটকে থাকতে পারেন is এটি আপনার শেলের সাথে ব্যাশ উদাহরণটি প্রতিস্থাপন করবে।

অথবা আপনি করতে পারেন ssh host "zsh -l"


কেন -1 (15 অক্ষর ...)?
নওফাল ইব্রাহিম

এটি একটি নিম্ন কেসL
ড্রিফ্যাচ্যাচার

1
ssh -tশেষ বিকল্পগুলির জন্য একটি টিটিওয়াই পেতে প্রয়োজনীয়। ডিফল্টরূপে যদি একটি কমান্ড সরবরাহ করা হয় (যেমন zsh -l) সরবরাহ করা হয়, ওপেনএসএসএইচ একটি নন-লগইন শেল করবে যা আপনার জন্য টিটিওয়াই বরাদ্দ -lকরবে না এবং এটি পরিবর্তন করবে না (কারণ এটি লগ-ইন করার পরে কার্যকর করা হয়)।
ফ্রাঙ্কলিন ইউ

8

আপনার ডিফল্ট শেলটি পরিবর্তন করতে / ইত্যাদি / পাসডাব্লুড (যদি আপনার অধিকার থাকে, বা আপনার সিস্টেম অ্যাডমিনকে জিজ্ঞাসা করুন)


কিছু কারণে আমি সম্প্রতি তৈরি করা ব্যবহারকারীদের কোনও ডিফল্ট শেল ছিল না। এটি আমার পক্ষে কাজ করেছে। ধন্যবাদ।
মিমোরালিয়া

2
ধন্যবাদ এই উত্তরটি দুর্দান্ত। আমার এখানে শেলও ছিল না। আমি লাইনটি myusername: x: 1000: 1000 :: / home / myusername: খুঁজে পেয়েছি এবং শেষে / বিন / বাশ যুক্ত করেছি। লগ আউট করুন এবং আমার ssh অধিবেশন ব্যাশ ব্যবহার করছে :)
স্টিয়ার্ট ইভান্স

6

আপনি যদি নিজের ডিফল্ট শেলটি পরিবর্তন করতে না পারেন তবে ssh -t user@host 'zsh -l'কাজ করে।

-tপতাকা একটি সিউডো-TTY বরাদ্দ, এবং জোর -lপতাকা spawns একটি লগ-ইন শেল


4

আমি নিশ্চিত না যে আপনি কীভাবে আপনার স্থানীয়কে .zshrcদূরবর্তী সার্ভারে রাখতে পারবেন, (এটি স্থায়ীভাবে এটি সেখানে সংরক্ষণ না করে), এটি আমার জন্য দূরবর্তী সার্ভারে আমার লগইন শেলটি পরিবর্তন করতে কাজ করে।

যেহেতু এটি একটি ভাগ করা অ্যাকাউন্ট, আমি zshকেবল এই পদ্ধতিতে নিজের জন্য ব্যবহার করতে পারি।

~/.ssh/configএটি আপনার স্থানীয় মেশিনে আপনার ফাইলে যুক্ত করুন।

Host yourServer
    HostName <IP, FQDN or DNS resolvable name>
    IdentityFile ~/.ssh/<your keyfile>
    RemoteCommand zsh -l
    RequestTTY force
    User <yourUsername>

নীচের মত, আপনি যা খুঁজছেন তা সম্পাদন করার হ্যাকিশ উপায় হতে পারে।

সতর্কতা এটি কোনও গ্যারান্টি সহ আসে না এবং 'জ্ঞানী' বলে মনে হয় না, তবে আমি নিজের স্থানীয় ফাইলটি সার্ভারে রেখেছি এবং এটি ব্যবহার করে লগইন শেলটিতে উত্স দিয়েছি।

Host someHost
    HostName someIP
    IdentityFile ~/.ssh/somekey.pem
    RemoteCommand zsh -l -c 'sleep 1; source /tmp/somefile; zsh'
    PermitLocalCommand yes
    LocalCommand bash -c 'sftp %r@%h <<< "put /tmp/somefile /tmp/somefile"'
    RequestTTY force
    User someUser

কিভাবে এটা কাজ করে?

  • RemoteCommand দূরবর্তী দিকে চালানো দরকার তা নির্ধারণ করে।
  • LocalCommandস্থানীয়ভাবে কী চালানো উচিত তা সংজ্ঞায়িত করে, যা আপনার স্থানীয় ফাইলটিকে সোর্স করার জন্য দূরবর্তী সার্ভারে অনুলিপি করতে ব্যবহৃত হয়। এখানে ধরা আছে, দূরবর্তী হোস্টের সাথে 'সফল' সংযোগের পরে এটি ঘটে।

অর্থ:

  1. রিমোটের সাথে আপনার সংযোগটি উন্মুক্ত এবং জীবন্ত হওয়া উচিত
  2. আপনার রিমোট শেলটিতে এখনও ফাইল নেই, সুতরাং এটি ফাইল না হওয়া পর্যন্ত অপেক্ষা করতে হবে, ঠিক আছে sleep
  3. আপনার স্থানীয় ব্যবহারগুলি sftpআপনার ফাইলকে রিমোট সার্ভারে রেখে দেয়, রিমোট সার্ভার থেকে উঠে আসে sleepএবং আপনার স্ক্রিপ্টগুলি উত্স করে।

এটি সুপার হ্যাকিশ, আমি আরও ভাল উপায় আছে কিনা তা জানতে চাই।

আপডেট: এটি 'দীর্ঘ' ঘুমের পরিবর্তে ব্যবহার করা যেতে পারে:
RemoteCommand zsh -l -c 'while [[ ! -f /tmp/somefile ]]; do sleep 0.05; done; source /tmp/somefile; zsh'

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