Ինչպե՞ս կարող եք ուղղել «Թույլտվությունը մերժված է (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 սերվերը: