Ինչպե՞ս կարող եք ուղղել «Թույլտվությունը մերժված է (publickey)» SSH սխալը Linux-ում:


Արդյո՞ք ձեր հանրային SSH ստեղները ձեզ դժվարացնում են: Փորձեք այս լուծումներից մեկը:

SSH-ն օգտակար գործիք է հեռավոր մեքենաներին միանալու համար, սակայն կարող եք հանդիպել «Թույլտվությունը մերժված է (publickey)» սխալի հետ, որը ներառում է ձեր հանրային բանալին Linux-ում: Բարեբախտաբար, կան մի քանի հեշտ ուղղումներ, որոնք կարող եք փորձել լուծել այն:

Ի՞նչ է հանրային բանալին:

Երբ դուք ստեղծում եք բանալիների զույգ SSH-ի համար Linux-ում, ձեզ կտրվի հանրային և մասնավոր բանալի: Մասնավոր բանալին ձեզ հետ կմնա որպես խստորեն պահպանվող գաղտնիք, բայց հանրային բանալին այն է, ինչը կփոխանցվի հեռավոր սերվերներին, որպեսզի թույլ տա ձեզ մուտք գործել առանց գաղտնաբառի: Ձեր տեղական SSH հաճախորդը կհամապատասխանի հանրային բանալին մասնավոր բանալիին, երբ միանաք:

Այս մեթոդի առավելությունն այն է, որ դուք պետք է տրամադրեք միայն հանրային բանալին: Քանի դեռ դուք գաղտնի եք պահում ձեր անձնական բանալին, դա պետք է ձեզ ապահով պահի, եթե ձեր հանրային բանալին վտանգի ենթարկվի: Հանրային բանալին ինքնին անօգուտ կլինի:

OpenSSH-ը՝ բաց կոդով աշխարհում ամենալայն օգտագործվող SSH հաճախորդն ու սերվերը, պահանջում է, որ ֆայլը, որը պարունակում է ցանկացած հանրային բանալիներ հեռակառավարվող մեքենայի վրա («.ssh/authorized_keys» ձեր հիմնական գրացուցակում), որոշակի թույլտվություններ ունենա: Այն չի աշխատի, եթե գրելու թույլտվությունները սահմանվեն այլ օգտատերերի համար, ինչը հայտնի է որպես «աշխարհում գրելի»: Քանի որ գրացուցակի անունը սկսվում է կետով (.), այն չի երևա որևէ ls ցուցակում, մինչև չօգտագործեք ls -A հրամանը:

Թույլտվությունները կարող են փոխվել, եթե ֆայլը պատճենված է մեկ այլ համակարգչից կամ դուք ինքներդ եք այն ստեղծել: Բարեբախտաբար, դա հեշտ է շտկել:

Ստուգեք ձեր հանրային բանալիների թույլտվությունները

Authorized_keys ֆայլը պարզապես պարզ տեքստային ֆայլ է, որը պարունակում է հաճախորդների բոլոր հանրային բանալիները, որոնք ցանկանում եք, որպեսզի կարողանաք մուտք գործել ձեր հաշիվ հեռավոր մեքենայի վրա: Դրա թույլտվությունները տեսնելու համար օգտագործեք ls հրամանը -l տարբերակով.

ls -l ~/.ssh/authorized_keys

Սա ցույց կտա սեփականատիրոջ, խմբի և այլ օգտվողների թույլտվությունների կարգավորումները: Ուշադրություն դարձրեք տողի վերջին վեց տառերին: Եթե նրանց մեջ տեսնում եք «w», դա նշանակում է, որ խումբը կամ մյուսները կարող են գրել դրան՝ դարձնելով այն անապահով:

Դուք կցանկանաք, որ այս ֆայլը գրավոր լինի ձեր կողմից, բայց ոչ խմբի կամ մյուսների կողմից: Ճիշտ օգտվողներին հասանելիություն տալու համար կարող եք փոխել թույլտվությունները chmod-ի միջոցով:

Երկու ճանապարհ կա՝ թվային և խորհրդանշական:

Թվային ուղին ավելի կարճ է, բայց դուք պետք է մտապահեք ութթալ թույլտվության համարները.

chmod 700 ~/.ssh/authorized_keys

Սիմվոլիկ մեթոդը ավելի շատ մնեմոնիկ է.

chmod go-w ~/.ssh/authorized_keys

Ապահով պատճենեք ստեղները՝ օգտագործելով ssh-agent

Դուք կարող եք ձեռքով պատճենել և տեղադրել ձեր մեքենայից ցանկացած հանրային բանալին ~/.ssh/.authorized_keys ֆայլում, սակայն ssh-agent ծրագրի օգտագործումը կնվազեցնի թույլտվությունների սխալների հավանականությունը:

Ssh-agent-ը սկսելու համար օգտագործեք այս հրամանը.

eval "$(ssh-agent-s)"

Ssh-agent-ի միջոցով հեռավոր սերվեր մուտք գործելու համար օգտագործեք -A տարբերակը ssh-ով

ssh -A user@example.com

Ստուգեք Հեռակա սերվերի sshd կարգավորումները

Եթե այս ջանքերից որևէ մեկը ձախողվի, հնարավոր է, որ դուք ստիպված լինեք որոշակի կազմաձևման փոփոխություններ կատարել հեռավոր մեքենայի sshd սերվերում, եթե ունեք արմատային մուտք: Եթե ոչ, դուք հավանաբար ստիպված կլինեք կապ հաստատել համակարգի ադմինիստրատորի հետ՝ օգնելու ձեզ լուծել SSH կապի հետ կապված ցանկացած խնդիր: Սա վերջին միջոցն է, քանի որ այն կարող է ձեր համակարգը դարձնել ավելի քիչ անվտանգ:

sshd-ի համար ամբողջ համակարգի կազմաձևման ֆայլն է /etc/ssh/sshd_config: Քանի որ այն պատկանում է root-ին, դուք պետք է օգտագործեք sudo այն խմբագրելու համար: Օրինակ՝ Vim-ով խմբագրելու համար.

sudo vim /etc/ssh/sshd_config

Որպեսզի sshd-ը թույլ տա ձեզ մուտք գործել, նույնիսկ եթե ձեր autorized_keys ֆայլը գրի առնող է, այս ֆայլում «StrictModes» տարբերակը դրեք «ոչ»:

Պահպանեք այն և վերագործարկեք SSH սերվերը.

sudo systemctl restart sshd.service

Այժմ դուք կարող եք ուղղել SSH հանրային բանալիների թույլտվությունների սխալները

Դուք կարող եք սխալների հանդիպել հեռավոր համակարգերում SSH հանրային բանալիների հետ կապված: Բարեբախտաբար, ժամանակի մեծ մասը ձեզ մնում է ստուգել և սահմանել ֆայլի թույլտվությունները, որպեսզի ոչ ոք չկարողանա տեսնել ձեր բանալին: Ավելի հուսալի կապերի համար կարող եք նաև օգտագործել ssh-agent: Որպես վերջին միջոց, դուք կարող եք ավելի քիչ խստացնել SSH սերվերը: