এসএসএইচ আমার পাবিকে এড়িয়ে চলে এবং একটি পাসওয়ার্ড জিজ্ঞাসা করে


52

আমি যখনই আমার দূরবর্তী সার্ভারে প্রবেশ করি তখন আমার পাসওয়ার্ডটি সরবরাহ করা দরকার। আমি আমার সার্বজনীন কী (id_dsa.pub) অনুলিপি সার্ভারে এটি ব্যবহার করে:

ssh-copy-id -i id_dsa.pub user@server

আমি এটি যথাযথভাবে অনুমোদিত_কিগুলিতে যুক্ত করেছিলাম checked সমস্ত ফাইল / ডিরেক্টরি অনুমতি সঠিক:

~user 755
~user/.ssh 700
~user/.ssh/authorized_keys 640
~user/.ssh/id_dsa.pub 644

/ Etc / ssh / sshd_config এর পাসওয়ার্ডঅথেন্টিকেশন ক্ষেত্রটি হ্যাঁ সেট করা হয়েছে। আমি sshd কে ডিবাগ মোডে রেখেছি এবং ssh কমান্ডে ভার্বোজ সুইচ যুক্ত করেছি। আমি ধারণাটি পেয়েছি যে লাইনের কারণে সার্ভার id_pub.dsa ব্যবহার করার চেষ্টা করেনি

Skipping ssh-dss key: ........... not in PubkeyAcceptedKeyTypes

সার্ভারের পাশে কোনও এনক্রিপ্টড ডিস্ক নেই। কোন ধারণা কিভাবে অগ্রগতি? এখানে ssh ডিমন ডিবাগ তথ্য:

sudo /usr/sbin/sshd -d
====
debug1: sshd version OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: key_parse_private2: missing begin marker
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug1: key_parse_private2: missing begin marker
debug1: read PEM private key done: type DSA
debug1: private host key: #1 type 2 DSA
debug1: key_parse_private2: missing begin marker
debug1: read PEM private key done: type ECDSA
debug1: private host key: #2 type 3 ECDSA
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-d'
Set /proc/self/oom_score_adj from 0 to -1000
debug1: Bind to port 22 on 0.0.0.0.
Server listening on 0.0.0.0 port 22.
debug1: Bind to port 22 on ::.
Server listening on :: port 22.
debug1: Server will not fork when running in debugging mode.
debug1: rexec start in 5 out 5 newsock 5 pipe -1 sock 8
debug1: inetd sockets after dupping: 3, 3
Connection from xxx port 63521 on yyy port 22
debug1: Client protocol version 2.0; client software version OpenSSH_7.1
debug1: match: OpenSSH_7.1 pat OpenSSH* compat 0x04000000
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.3
debug1: permanently_set_uid: 115/65534 [preauth]
debug1: list_hostkey_types: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256 [preauth]
debug1: SSH2_MSG_KEXINIT sent [preauth]
debug1: SSH2_MSG_KEXINIT received [preauth]
debug1: kex: client->server chacha20-poly1305@openssh.com <implicit> none [preauth]
debug1: kex: server->client chacha20-poly1305@openssh.com <implicit> none [preauth]
debug1: expecting SSH2_MSG_KEX_ECDH_INIT [preauth]
debug1: SSH2_MSG_NEWKEYS sent [preauth]
debug1: expecting SSH2_MSG_NEWKEYS [preauth]
debug1: SSH2_MSG_NEWKEYS received [preauth]
debug1: KEX done [preauth]
debug1: userauth-request for user damian service ssh-connection method none [preauth]
debug1: attempt 0 failures 0 [preauth]
debug1: PAM: initializing for "damian"
debug1: PAM: setting PAM_RHOST to "freebox-server.local"
debug1: PAM: setting PAM_TTY to "ssh"
Connection closed by xxxx [preauth]
debug1: do_cleanup [preauth]
debug1: monitor_read_log: child log fd closed
debug1: do_cleanup

এখানে ssh verbose আউটপুট:

$ ssh -v user@server
OpenSSH_7.1p1, OpenSSL 1.0.2d 9 Jul 2015
debug1: Connecting to server [xxxx] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_rsa-cert type -1
debug1: identity file /home/user/.ssh/id_dsa type 2
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.3
debug1: match: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.3 pat OpenSSH_6.6.1* compat 0x04000000
debug1: Authenticating to server:22 as 'user'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client chacha20-poly1305@openssh.com <implicit> none
debug1: kex: client->server chacha20-poly1305@openssh.com <implicit> none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:v4BNHM0Q33Uh6U4VHenA9iJ0wEyi8h0rFVetbcXBKqA
debug1: Host 'server' is known and matches the ECDSA host key.
debug1: Found key in /home/user/.ssh/known_hosts:2
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/user/.ssh/id_rsa
debug1: Skipping ssh-dss key /home/user/.ssh/id_dsa for not in PubkeyAcceptedKeyTypes
debug1: Trying private key: /home/user/.ssh/id_ecdsa
debug1: Trying private key: /home/user/.ssh/id_ed25519
debug1: Next authentication method: password
user@server's password:

1
একই সমস্যা (এবং মূলত একই সমাধান) এর জন্য সুপারিউজার.com/q/1016989/93541 দেখুন ।
DW

মনে রাখবেন যে গন্তব্যস্থলে sshd_config এর PubkeyAuthentication নং থাকলে , আপনাকে সর্বদা পাসওয়ার্ডের জন্য অনুরোধ জানানো হবে। এটি হ্যাঁ সেট করুন এবং পাবকি প্রমাণীকরণ সক্ষম করতে sshd (গন্তব্য হোস্টে) পুনরায় চালু করুন।
সি কেলি

উত্তর:


84

নতুন ওপেনশ সংস্করণ (.0.০+) ডিএসএ কীগুলি অবমূল্যায়ন করেছে এবং ডিএসএ কীগুলি ডিফল্টরূপে ব্যবহার করছে না (সার্ভার বা ক্লায়েন্টে নেই)। কীগুলি আর ব্যবহারের জন্য পছন্দ করা হয় না, তাই আপনি যদি পারেন তবে আমি যেখানে সম্ভব সেখানে আরএসএ কীগুলি ব্যবহার করার পরামর্শ দেব ।

আপনার যদি সত্যিই ডিএসএ কীগুলি ব্যবহার করার প্রয়োজন হয় তবে আপনার ক্লায়েন্ট কনফিগারেশনে তাদের স্পষ্টভাবে মঞ্জুরি দেওয়া দরকার

PubkeyAcceptedKeyTypes +ssh-dss

~/.ssh/configভার্বোজ বার্তা আপনাকে বলার চেষ্টা করায়, সেই লাইনে প্রবেশের জন্য যথেষ্ট হওয়া উচিত ।


5
+1, তবে আরও ভাল পরামর্শ
হ'ল অন্যটি, অবহিত

@ জেসনওয়ারিয়ান মন্তব্য করার জন্য ধন্যবাদ। নিশ্চয়ই. আমি উত্তর আপডেট করব।
জাকুজে 21

ধন্যবাদ জাকুজে! এটি বোধগম্য, আমি বুঝতে পারি নি যে ডিএসএ ওল্ডহাট ছিল। আমি একটি নতুন কী জুড়ি তৈরি করেছি ssh-keygenআরএসএ এখন ডিফল্ট। আমি আগামীকাল অন্য মেশিন থেকে এটিতে লগইন করার চেষ্টা করব।
দামো

আপনার ~/.ssh/configঅস্তিত্ব না থাকলে কেবল এটি তৈরি করুন। আর corect অনুমতি সেট মনে রাখবেন: chmod 600 ~/.ssh/config
ফ্লোরিয়ান ব্রুকার

@knb এটি করবেন না এটি ভবিষ্যতে অন্য কোনও অ্যালগরিদম ব্যবহার এড়ানো হবে, যেহেতু আপনি সমস্ত উপবৃত্তাকার বক্ররেখারীর অ্যালগরিদম সরিয়েছেন।
জাকুজে

2

আমার ক্ষেত্রে, আমি এই সমস্যাটি নিয়েছিলাম কারণ অন্য একজন ব্যবহারকারী AuthorizedKeysFileঅবস্থান পরিবর্তন করেছিল । যেহেতু authorized_keysএই অবস্থানটিতে অন্য ব্যবহারকারীর জন্য কোনও ছিল না , authorized_keysতাই ডিফল্ট হোম ডিরেক্টরিতে সঠিক অনুমতি থাকা সত্ত্বেও লগইন পাসওয়ার্ডে ডিফল্ট হবে ।

AuthorizedKeysFile   /etc/ssh/%u/authorized_keys

এই পরিবর্তিত লাইনটি আউট মন্তব্য করেছে এবং ডিফল্ট সেটিংসে ফিরে যেতে sshd পরিষেবাটি পুনরায় আরম্ভ করেছে, যা অন্য ব্যবহারকারীদের তাদের কীগুলি ব্যবহার করে প্রমাণীকরণের অনুমতি দেয়।


আমি কেবল একটি RHEL7 সিস্টেমে অনুরূপ ইস্যুটি সমাধান করেছি যেখানে ব্যবহারকারীর হোমডিরের উপর সেলইনাক্স প্রসঙ্গটি সঠিকভাবে শুরু করা হয়নি, সুতরাং স্ট্যান্ডার্ড অনুমতি থাকা সত্ত্বেও অনুমোদিত কী কী ফাইলটি পড়তে সক্ষম হননি। শেষ পর্যন্ত আমি restorecon -Rv /homeএকই সিস্টেমে ভুলভাবে সেট আপ করা অন্যান্য ব্যবহারকারীদের জন্য এটি ঠিক করার জন্য ছুটে এসেছি ।
ড্যানিসাউয়ার

1

আমি জাকুজের উত্তরটি চেষ্টা করেছিলাম ভাগ্য নেই। তবে আমি সেখান থেকে সমস্যাটি বুঝতে পারি। মন্তব্য যুক্ত করার চেষ্টা করা হয়েছে তবে খ্যাতি প্রয়োজন কেন অ্যাঞ্জার যুক্ত করা উচিত।

তবে আমার জন্য কনফিগারেশন ফাইল / ইত্যাদি / এসএসএস / এসএসএস_কনফিগ

  1. sudo nano /etc/ssh/ssh_config
  2. PubkeyAcceptedKeyTypes +ssh-dss নীচে এই লাইন যুক্ত করা হয়েছে।
  3. সংরক্ষণ করুন এবং আবার চেষ্টা করুন।

কাজ করছে!


1

এসএসএইচকে রাস্পবেরি পাইতে আমি কী করেছি তা সংক্ষেপে জানাতে ।

সার্ভার মেশিনে (রাস্পবেরি পাই):

$ ip addr show 

বা সহজভাবে ip a, এটি পাই মেশিনের আইপি ঠিকানা - হোস্ট_ইপ প্রদর্শন করবে

$ mkdir .ssh

ক্লায়েন্ট মেশিনে (উবুন্টু):

$ ssh-keygen -t rsa  

উপরে জাকুজে ক্রেডিট আমি প্রাথমিকভাবে কী প্রজন্মের জন্য ssh-keygen -t dsa ব্যবহার করছিলাম এবং এসএসএস আমাকে পাসওয়ার্ড চেয়েছিল। @ জাকুজের উত্তর না পাওয়া পর্যন্ত ssh -v ip- ঠিকানা আমাকে খুব বেশি দরকারী তথ্য দেয় না

$ cat .ssh/id_rsa.pub | ssh user_id@host_ip 'cat >> ~/.ssh/authorized_keys'  

ইউজার_আইডি এবং হোস্ট_ইপ প্রতিস্থাপন করুন, প্রম্পট করার পরে পাই মেশিনের জন্য পাসওয়ার্ড সরবরাহ করুন

$ ssh user@ip_address

সফলভাবে পিআই-তে লগ ইন হয়েছে, আর পাসওয়ার্ড নেই


0

ডিএসএ আমার পক্ষে কাজ করেনি। আরএসএ করেছে।

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat /Users/user_name/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

এবং আমি পাসওয়ার্ড ছাড়াই ssh করতে পারেন।

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