এমনকি অনুমোদিত_কিগুলিতে পাবলিক কী যুক্ত করেও এসএসএস করা যায় না


16

আমার কাছে ডিজিটাল ওশিয়ান ড্রপলেট রয়েছে যা আমি নিজেকে এসএসএস অ্যাক্সেস দেওয়ার চেষ্টা করছি। আমি নিশ্চিত না যে এর আগে এটি কী হয়েছিল। আমি ডিজিটাল মহাসাগর UI এর মাধ্যমে আমার সর্বজনীন কী যুক্ত করার চেষ্টা করেছি। যে কাজ করে না, আমি পেতে রাখা permission denied (publickey)

আমি ডিজিটাল সমুদ্রের কনসোলের মাধ্যমে সার্ভারটি অ্যাক্সেস করেছি এবং ম্যানুয়ালি আমার সর্বজনীন কী এতে যুক্ত করেছি /root/.ssh/authorized_keys। আমি তখন ব্যবহার করে ssh করার চেষ্টা করেছি ssh root@x.x.x.x। এটি কাজ করেনি (অনুমতি অস্বীকৃত)।

তাই আমি একটি নতুন ব্যবহারকারী যোগ করার চেষ্টা করেছি, নির্মিত /home/me/.sshঅনুমতিসহ ডিরেক্টরির 700উপর .sshডিরেক্টরির নিজেই, এবং 600উপর authorized_keysফাইল। তারপরে চেষ্টা করেছি ssh me@x.x.x.x। এটিও কাজ করেনি।

Ssh ডিমন পুনরায় চালু করার ফলে কোনও কিছুই পরিবর্তন হয় না।

আমি কী মিস করছি?

সম্পাদনা:

এখানে ভার্বোজ ssh আউটপুট।

https://gist.github.com/jaesung2061/a37cfd68308414cede8abf7f0137daa9

সম্পাদনা 2:

LogLevel DEBUG3 আউটপুট:

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


সংযোগ থেকে ভার্জোজ লগ, সার্ভার লগতে আপনার sshd_config এর সামগ্রী এবং ssh সম্পর্কিত সম্ভাব্য ত্রুটিগুলি পোস্ট করুন।
জাকুজে

@ জাকুজে আমি আউটপুট যোগ করেছি ... আপনার মন্তব্যটি আমি এর আগে লক্ষ্য করিনি।
জেফ

চাবি প্রত্যাখ্যান করা হয়। সম্ভব সমস্যার জন্য সার্ভার লগ (সম্ভবত সঙ্গে LogLevel DEBUG3মধ্যে sshd_config)। আমি সন্দেহ করি এগুলি অনুমতির সমস্যা, তবে এর বেশ কয়েকটি কারণ থাকতে পারে।
জাকুজে

এটি বলেছে[date omitted] www sssh[15029]: Connection closed by x.x.x.x port 55519 [preauth]
জেফ

অনুমোদিত_কিগুলি ফাইলের অনুমতিগুলি কী কী? ls -ld ~ ~/.ssh ~/.ssh/authorized_keys? বাগাড়ম্বরপূর্ণ সংশোধন করে, রিস্টার্ট SSH সেবা ফাইল উপরে উল্লিখিত সার্ভার থেকে লগ ইন করুন জন্য, আবার সংযোগ এবং লগ পোষ্ট (এছাড়াও হওয়া উচিত auth.log
Jakuje

উত্তর:


20

ক্লায়েন্ট কনফিগারেশন

সেট আপ করুন ~/.ssh/config

এর জন্য হোস্ট এন্ট্রি স্থাপন করা sshসত্যিই সহজ এবং আপনাকে অনেক ঝামেলা বাঁচাবে। এখানে একটি উদাহরণ:

Host digitaloceanbox
Hostname 111.111.111.111
User root
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/digitalocean-rsa
ForwardX11 yes


Host github github.com
Hostname github.com
User git
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/github-rsa
ForwardX11 no

এই উদাহরণে, আমরা সেটআপ করি digitaloceanboxএবং githubএবং github.comযাতে আমরা নিম্নলিখিত আদেশগুলি করতে পারি:

  1. ssh github
  2. ssh digitaloceanbox

আমরা যদি কনফিগার ফাইলে উল্লিখিত ব্যবহারকারীর চেয়ে পৃথক ব্যবহারকারী হিসাবে লগইন করতে চাই, আমরা কেবল user@প্রারম্ভিক শব্দটি রেখেছি:

  • ssh user@digitaloceanbox

জেনারেট sshকী

ssh-keygen -t rsa -b 4096 -C user@homemachine
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):  /home/user/.ssh/digitalocean-rsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/user/.ssh/digitalocean-rsa
Your public key has been saved in /home/user/.ssh/digitalocean-rsa.pub.
The key fingerprint is:
SHA256:p9PYE/tveF2n//bLbp3ogYDtMtYEC5ziQiPxeob6fbo user@homemachine

মনে রাখবেন যে, আমি ব্যক্তিগত কী আমি প্রোত্সাহে জেনারেট করতে চান তার সম্পূর্ণ পাথ উল্লেখ করেছি ssh-keygen। আমি মন্তব্যটিও সংজ্ঞায়িত করেছি ( -Cযা আমাকে দূরবর্তী মেশিনে কীগুলি সহজেই সনাক্ত করতে দেয়।

এটি দুটি ফাইল তৈরি করবে:

  1. .ssh/digitalocean-rsa
    • প্রাইভেট কী এটিকে কখনই শেয়ার করবেন না
  2. .ssh/digitalocean-rsa.pub
    • পাবলিক কী। এটি যা আপনি প্রমাণ করতে সার্ভারে সঞ্চয় করেন store

আপনি যখন আপনার sshকী সরবরাহ করবেন তখন নিশ্চিত হয়ে নিন এটি .pubসংস্করণ !! আপনি যখন এতে যুক্ত হন ~/.ssh/config, সঠিক বেসরকারী কীটি আপনার সিস্টেমে যে পাবলিক কী-এর সাথে মেলে তা অবশ্যই নিশ্চিত করবেন।


সার্ভার কনফিগারেশন

বেশিরভাগ ইনস্টলেশন পাবলিক কী প্রমাণীকরণ সক্ষম করার সাথে আসবে। আপনি যদি সমস্ত উইলি নিলির কাজগুলি শুরু করেন তবে আপনি কিছু সমস্যা পেতে পারেন। ওপিতে যেখানে তাদের সমস্যা রয়েছে সেখানে আমি পরামর্শ দিচ্ছি যে ওপি /root/.ssh/ডিরেক্টরিটি শুরু করার জন্য মুছে ফেলবে ।

আপনি sshরিমোট সিস্টেমে রুট ব্যবহারকারীদের অ্যাক্সেস করতে ব্যবহার করার পরামর্শ দেওয়া হয় না । আপনি sshঅন্য ব্যবহারকারীর মধ্যে প্রবেশ করুন এবং তারপরে আপনার পাসওয়ার্ড ( sudo su -) ব্যবহার করে রুট করার পরামর্শ দেওয়া হচ্ছে ।

ব্যবহার করে হোস্টে কী যুক্ত করুন ssh-copy-id

আপনি অন্য ব্যবহারকারী তৈরি এবং sshসেই ব্যবহারকারী বা মূল ব্যবহারকারী হিসাবে ব্যবহার করার সিদ্ধান্ত নিলেন না কেন , নিম্নলিখিতটি হ'ল sshসার্ভারে কী রাখার প্রস্তাবিত উপায় :

  1. ssh-copy-id -i /home/user/.ssh/digitalocean-rsa.pub user@digitaloceanbox

এটি sshdডিরেক্টরি এবং প্রয়োজনীয় অনুমতিগুলির সাথে প্রয়োজনীয় ফাইলগুলি তৈরি করতে দেয় । এর অর্থ আপনার কাছে বিশৃঙ্খলার অনুমতি বা বিশদটি মনে রাখার দরকার নেই zero কীগুলি আপলোড করার জন্য কেবল সরঞ্জামটি ব্যবহার করুন।

পাসওয়ার্ড প্রমাণীকরণ অক্ষম করুন

বলা হচ্ছে, একবার আপনি কী কীওয়ার্ড হয়ে গেলে এবং কীগুলি ব্যবহার করে আপনি সংযোগ করতে সক্ষম হয়েছেন তা যাচাই হয়ে গেলে, আপনি পাসওয়ার্ড প্রমাণীকরণ অক্ষম sshdকরে পরিষেবাটি পুনরায় চালু করার পরামর্শ দেওয়া হয়:

  1. সম্পাদন করা /etc/ssh/sshd_config
  2. PasswordAuthentication no
  3. sudo systemctl restart sshd

নতুন ব্যবহারকারীদের কী হবে?

আপনি যদি পাসওয়ার্ড প্রমাণীকরণ অক্ষম করেন তবে কীভাবে আপনি নতুন ব্যবহারকারীদের কী করতে পারেন? একটি উপায় হ'ল /etc/skelডিরেক্টরিতে টেমপ্লেট ফাইল যুক্ত করা । একবার আপনি কোনও ব্যবহারকারীকে কী করতে চাইলে নিম্নলিখিতটি করুন:

  1. sudo cp -r .ssh/ /etc/skel/
  2. ls /etc/skel/.ssh
  3. /etc/skel/.ssh/যে কোনও ফাইল পাওয়া যায় তা সম্পাদনা করুন যাতে এগুলি ফাঁকা থাকে, যতক্ষণ না আপনি নতুনভাবে তৈরি প্রতিটি ব্যবহারকারীর জন্য স্বয়ংক্রিয়ভাবে নিজেকে কী করতে চান।

আপনি যখন নতুন ব্যবহারকারী তৈরি করবেন তখন sudo useradd -m newuserসেই ব্যবহারকারীর কাছে এটি থাকবে .ssh/authorized_keys, যা আপনি সম্পাদনা করতে পারবেন এবং সঠিক অনুমতি পাবেন have

ডিবাগ

আপনি দেখতে পারেন sshdদেখুন কেন সংযোগ ব্যর্থ বা প্রত্যাখ্যান করতে লগ ফাইল:

  1. sudo tail -f /var/log/auth.log

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


1
ডিবাগিং পদক্ষেপটি আমার পক্ষে কাজ করেছিল। রুট ডিরেক্টরিটির ভুল অনুমতি ছিল (700 হওয়া দরকার)
নাইসানজা

12

Ssh মালিকানা, ফাইল এবং ডিরেক্টরি কীগুলির সাহায্যে ডিরেক্টরি অনুমতি সম্পর্কে যথেষ্ট পিক।

by / .ssh / মালিকের মালিকানাধীন এবং 700 টি অনুমতি থাকতে হবে। ~ / .ssh / অনুমোদিত_কিগুলি মালিকের মালিকানাধীন এবং 600 টি অনুমতি থাকতে হবে।

সুতরাং, মূলের জন্য:

sudo chown root:root -R /root/.ssh/
sudo chmod 700 /root/.ssh/
sudo chmod 600 /root/.ssh/authorized_keys

আমার জন্য ব্যবহারকারী:

sudo chown me:me -R /home/me/
sudo chmod 700 /home/me/.ssh/
sudo chmod 600 /home/me/.ssh/authorized_keys

এবং তারপরে আবার চেষ্টা করুন।

অবশ্যই আপনার / etc / ssh / sshd_config পরীক্ষা করে দেখতে হবে যে রুটটি একেবারে লগইন করতে পারে কিনা, অথবা কেবল ssh কী দিয়ে।

যদি তোমার থাকে :

PasswordAuthentication no

তারপরে আপনি সেট করতে পারেন:

PermitRootLogin yes

এবং তারপরে sshd পুনরায় চালু করুন:

/etc/init.d/sshd restart

এবং আবার চেষ্টা করো.

মনে রাখবেন যে ssh এর সাথে, এসএসডি ডিমন এটির জন্য এসএসএস সেশন ব্যবহার করার পরেও পুনরায় আরম্ভ করা যেতে পারে penউপেনস এটির জন্য ডিজাইন করা হয়েছে।

আপনার আপলোড হওয়া লগ ফাইল স্নিপেটগুলি দেখে মনে হচ্ছে আপনি ম্যাকোএসএক্স ব্যবহার করছেন? আপনি কি এখানে একটি নতুন ssh কী তৈরি করতে পারেন?

তদ্ব্যতীত, আমি অতীতে জানতে পেরেছিলাম যে যখন আমার ব্যবহারকারীর জন্য আমার স্থানীয় কম্পিউটারে একাধিক প্রাইভেট এসএসএস কী থাকে তখন এটি কখনও কখনও এসএসএস দিয়ে দূরবর্তীভাবে লগ ইন করা অসম্ভব করে তোলে। এটি সমাধানের জন্য স্থানীয় কম্পিউটারে ~ / .ssh / config ফাইলটিতে এন্ট্রি করতে একটি দুর্দান্ত সহায়তা করেছে। উদাহরণ স্বরূপ :

Host my-vps
  HostName my-vps-ip-address-here
  IdentityFile ~/.ssh/id_rsa-my-private-key-location
  User my-username-here

এর পরে আপনার স্থানীয় কম্পিউটারে কমান্ড লাইনে চেষ্টা করুন:

ssh -v my-vps

Ssh কী ব্যবহার করার সাথে সাথে অন্য কিছু লগইনের জন্য কোনও ssh কী ব্যবহার করার সময় আপনি ssh কী সহ এন্ট্রি ছাড়াও sh / ssh / config ফাইলের মধ্যে ssh কী ব্যবহার ছাড়াই একটি ssh লগইন সংজ্ঞায়িত করতে পারেন, উদাহরণস্বরূপ:

Host pi
  Hostname 192.168.1.111
  Port 22
  User pi
  PasswordAuthentication yes
  PreferredAuthentications password

এটি আমার পক্ষে ভাল কাজ করে। কমান্ড লাইনে কোন কীটি ব্যবহার করতে হবে তা নির্ধারণ করাও সম্ভব:

ssh -v root@10.111.111.254 -i .ssh/id_rsa

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


এই সমাধানটি ছাড়াও, এসএসএইচ কাজ করতে আমাকেও আমার বাড়ির ফোল্ডারের জন্য অনুমতিগুলি পরিবর্তন করতে হয়েছিল:sudo chmod 700 /home/me/
Rg90

আপনি একজন লাইফসেভার, @ অ্যালবার্ট-জে! IdentityFileলাইন আমাকে এক ঘন্টা ধরে খাত থেকে বেরিয়ে এলাম।
zev

4

Ssh ডিমন কনফিগারেশনটি (অবশ্যই থাকা উচিত /etc/ssh/sshd_config) ডাবল পরীক্ষা করে দেখুন :

PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys

এছাড়াও AllowUser বা AllowGroups সেট করা হয়েছে কিনা তা দেখতে কনফিগারেশন ফাইলটি পরীক্ষা করুন , কারণ তারা যথাক্রমে ব্যবহারকারী এবং গোষ্ঠীর জন্য সাদা তালিকা হিসাবে কাজ করে।

এছাড়াও, আমি লক্ষ্য করেছি যে আপনি মূল ব্যবহারকারীকে একটি কী যুক্ত করার চেষ্টা করছেন। ডিফল্টরূপে রুট লগইন অক্ষম করা উচিত, তবে আপনি এটি পারমিটরুটলগিন ক্ষেত্রের মাধ্যমেও পরিবর্তন করতে পারেন ।


এর মধ্যে কোনওটিই কাজ করছে না: / আমি এখনও পাইPermission denied (publickey)
জেফ

3

আপনি যে লগগুলি সংযুক্ত করেছেন সে অনুসারে, আমি মনে করি আপনার ক্লায়েন্ট পক্ষের ব্যক্তিগত কী ফাইলটি খুঁজে না পাওয়াতে সমস্যা রয়েছে ।

  • প্রথমে ~/.ssh/id_rsaআপনার স্থানীয় মেশিনে ফাইলটি উপস্থিত আছে কিনা তা পরীক্ষা করুন এবং এটি সঠিক _ (যদি আপনার আরও থাকে)।

  • পরীক্ষা করে দেখুন .sshফোল্ডারের অনুমতি (হওয়া উচিত drwx------, যদি চালাতে না sudo chmod 700 ~/.ssh) এবং এটির সামগ্রীগুলি (হওয়া উচিত -rw-------, যদি চালাতে না sudo chmod 600 ~/.ssh/*) । দূরবর্তী মেশিনের জন্যও একই অনুমতি প্রয়োগ করুন।

অতিরিক্তভাবে, আপনি প্যারামিটারের সাহায্যে সরাসরি আপনার পছন্দসই প্রাইভেট কী ব্যবহার করে জোর করার চেষ্টা করতে পারেন ।ssh-i

  • আপনি নিম্নলিখিত কিছু অনুসরণ করতে পারেন:

    ssh -i /path/to/your/private-key root@X.X.X.X

    অথবা

    ssh -i ~/.ssh/id_rsa myRemoteUser@X.X.X.X

আপনি ssh ম্যানপেজে আরও তথ্য পেতে পারেন ( man sshআপনার টার্মিনালে চালানো হবে)

আপনি যদি rootব্যবহারকারী হিসাবে লগইন করতে চান তবে এ বিষয়টিও মনে রাখবেন , লগইন করার আগে আপনার রুট অ্যাকাউন্টটি সক্ষম করতে হবে, এটির জন্য আপনার পাসওয়ার্ড তৈরি করতে হবে sudo passwd rootবা আপনার সার্ভার প্রশাসনিক সরঞ্জামটি (উবুন্টু ডিফল্টরূপে রুট অ্যাকাউন্ট অক্ষম করেছে) । আপনি উবুন্টু উইকিতে আরও তথ্য পেতে পারেন ।

আশা করি এটা সাহায্য করবে.


3

আমি পুনরায় ইনস্টল করে দিয়েছি openssh-serverযা সমস্যার সমাধান করেছে। প্রদত্ত সমাধানগুলি সমস্ত দুর্দান্ত, তবে তারা আমার পক্ষে কার্যকর হয়নি। সমস্যাটি কী কারণে সৃষ্টি হয়েছিল তা সম্পর্কে আমার কোনও ধারণা নেই তবে আমি মনে করি পূর্ববর্তী বিকাশকারীরা কনফিগারেশনে গন্ডগোল করেছে এবং জিনিসগুলি বেশ খারাপভাবে গণ্ডগোল করেছে।

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

apt-get purge openssh-server
apt-get autoremove
apt-get autoclean
apt-get install openssh-server

আপনার ssh ক্লায়েন্ট / কীগুলি ক্রমানুসারে রয়েছে তা ধরে নিলে আপনার সার্ভারে আপনার SSH করতে সক্ষম হওয়া উচিত।


1

এই ইস্যুটি আমার জন্য ডিজিটাল মহাসাগরের ডেবিয়ান চিত্রটি ব্যবহার করে তুলেছে। কোনওভাবে সংক্ষিপ্ত সেট আপ প্রক্রিয়া চলাকালীন, সম্ভবত যখন আমি মূল পাসওয়ার্ড সেট করি তখন এর জন্য মালিকটি /rootব্যবহারকারীকে পরিবর্তন করা হয়েছিল debian। আমি নিম্নলিখিতটি দেখেছি /var/log/auth.log:

Jul 26 20:58:17 docker sshd[12576]: Authentication refused: bad ownership or modes for directory /root

কেবল কার্যকর chown root:root -R /rootকরেই সমস্যার সমাধান হয়েছে।

আছে HTH


0

সবে একটি খুব অনুরূপ সমস্যা ছিল। এটি আমার পক্ষে কাজ করেছে - এই লাইনটি / etc / ssh / sshd_config এ যুক্ত করুন

AuthorizedKeysFile %h/.ssh/authorized_keys 

তারপরে স্বাভাবিক পদ্ধতিতে পুনরায় আরম্ভ করুন।

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