{"id":246,"date":"2026-04-27T00:00:00","date_gmt":"2026-04-26T20:30:00","guid":{"rendered":"https:\/\/www.anynet.ir\/blog\/%d8%a7%d8%b9%d8%aa%d8%a8%d8%a7%d8%b1%d9%86%d8%a7%d9%85%d9%87%d9%87%d8%a7%db%8c-gnsi-%da%86%d8%b1%d8%ae%d8%b4-%d8%ae%d9%88%d8%af%da%a9%d8%a7%d8%b1-%d8%a7%d8%b9%d8%aa%d8%a8%d8%a7%d8%b1%d9%86%d8%a7%d9%85\/"},"modified":"2026-10-19T23:58:57","modified_gmt":"2026-10-19T20:28:57","slug":"%d8%a7%d8%b9%d8%aa%d8%a8%d8%a7%d8%b1%d9%86%d8%a7%d9%85%d9%87%d9%87%d8%a7%db%8c-gnsi-%da%86%d8%b1%d8%ae%d8%b4-%d8%ae%d9%88%d8%af%da%a9%d8%a7%d8%b1-%d8%a7%d8%b9%d8%aa%d8%a8%d8%a7%d8%b1%d9%86%d8%a7%d9%85","status":"publish","type":"post","link":"https:\/\/www.anynet.ir\/blog\/%d8%a7%d8%b9%d8%aa%d8%a8%d8%a7%d8%b1%d9%86%d8%a7%d9%85%d9%87%d9%87%d8%a7%db%8c-gnsi-%da%86%d8%b1%d8%ae%d8%b4-%d8%ae%d9%88%d8%af%da%a9%d8%a7%d8%b1-%d8%a7%d8%b9%d8%aa%d8%a8%d8%a7%d8%b1%d9%86%d8%a7%d9%85\/","title":{"rendered":"\u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc gNSI \u2014 \u0686\u0631\u062e\u0634 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc SSH \u062f\u0631 Cisco IOS XR"},"content":{"rendered":"<div><\/div>\n<div>\n<div><\/div>\n<\/div>\n<div>\n<div>\n<div>\n<h2 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u0686\u0627\u0644\u0634<\/h2>\n<p style=\"direction: rtl; text-align: right\"><a href=\"https:\/\/xrdocs.io\/programmability\/blogs\/gnsi-certz-tls-certificate-lifecycle-on-cisco-ios-xr\" style=\"color: rgb(0, 102, 204)\">Certz \u0645\u062f\u06cc\u0631\u06cc\u062a TLS \u0631\u0627 \u0628\u0631\u0627\u06cc \u0635\u0641\u062d\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a gRPC \u0628\u0631 \u0639\u0647\u062f\u0647 \u062f\u0627\u0631\u062f\u060c \u0627\u0645\u0627 \u0627\u06a9\u062b\u0631 \u062a\u062c\u0647\u06cc\u0632\u0627\u062a \u0634\u0628\u06a9\u0647 \u062f\u0627\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc SSH \u0646\u06cc\u0632 \u0647\u0633\u062a\u0646\u062f \u2014 \u06a9\u0646\u0633\u0648\u0644\u060c VTY \u0648 \u0639\u06cc\u0628\u200c\u06cc\u0627\u0628\u06cc \u062a\u0639\u0627\u0645\u0644\u06cc. \u0686\u0631\u062e\u0634 \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc SSH (\u06af\u0630\u0631\u0648\u0627\u0698\u0647\u200c\u0647\u0627\u060c \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062c\u0627\u0632\u060c \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646\u060c \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627) \u0628\u0647\u200c\u0637\u0648\u0631 \u0633\u0646\u062a\u06cc \u0628\u0647 \u0645\u0639\u0646\u0627\u06cc \u0648\u06cc\u0631\u0627\u06cc\u0634 \u062f\u0633\u062a\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u060c \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u200c\u0647\u0627 \u06cc\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 CLI\u0647\u0627\u06cc \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0647\u0631 \u067e\u0644\u062a\u0641\u0631\u0645 \u0627\u0633\u062a. \u0647\u06cc\u0686 API \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u06cc \u0628\u0631\u0627\u06cc \u0686\u0631\u062e\u0634 \u0645\u062a\u0631\u06cc\u0627\u0644 SSH \u062f\u0631 \u0645\u06cc\u0627\u0646 \u0641\u0631\u0648\u0634\u0646\u062f\u06af\u0627\u0646 \u0645\u062e\u062a\u0644\u0641 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f\u060c \u0647\u06cc\u0686 \u0642\u0627\u0628\u0644\u06cc\u062a \u0628\u0627\u0632\u06af\u0634\u062a (Rollback) \u062f\u0627\u062e\u0644\u06cc \u062f\u0631 \u0635\u0648\u0631\u062a \u0628\u0631\u0648\u0632 \u062e\u0637\u0627 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0646\u06cc\u0633\u062a \u0648 \u0647\u06cc\u0686 \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc\u200c\u0634\u062f\u0647 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a (Authentication) \u06a9\u0647 \u0633\u0631\u0648\u0631 SSH \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f\u060c \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f. \u0627\u06af\u0631 \u0686\u0631\u062e\u0634 \u06a9\u0644\u06cc\u062f \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Key) \u0628\u0627 \u0634\u06a9\u0633\u062a \u0645\u0648\u0627\u062c\u0647 \u0634\u0648\u062f\u060c \u0627\u067e\u0631\u0627\u062a\u0648\u0631\u0647\u0627 \u0628\u0627 \u062e\u0637\u0631 \u0645\u0633\u062f\u0648\u062f \u0634\u062f\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u062e\u0648\u062f \u0645\u0648\u0627\u062c\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/a> \u0645\u062f\u06cc\u0631\u06cc\u062a TLS \u0631\u0627 \u0628\u0631\u0627\u06cc \u0635\u0641\u062d\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a (Management Plane) \u062f\u0631 gRPC \u0628\u0631 \u0639\u0647\u062f\u0647 \u062f\u0627\u0631\u062f\u060c \u0627\u0645\u0627 \u0627\u06a9\u062b\u0631 \u062a\u062c\u0647\u06cc\u0632\u0627\u062a \u0634\u0628\u06a9\u0647 \u0627\u0632 \u062f\u0633\u062a\u0631\u0633\u06cc SSH \u0646\u06cc\u0632 \u0628\u0631\u062e\u0648\u0631\u062f\u0627\u0631\u0646\u062f\u061b \u0634\u0627\u0645\u0644 \u06a9\u0646\u0633\u0648\u0644\u060c VTY \u0648 \u0639\u06cc\u0628\u200c\u06cc\u0627\u0628\u06cc \u062a\u0639\u0627\u0645\u0644\u06cc. \u0686\u0631\u062e\u0634 \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc SSH (\u0634\u0627\u0645\u0644 \u06af\u0630\u0631\u0648\u0627\u0698\u0647\u200c\u0647\u0627\u060c \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062c\u0627\u0632\u060c \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 \u0648 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627) \u0628\u0647\u200c\u0637\u0648\u0631 \u0633\u0646\u062a\u06cc \u0628\u0647 \u0645\u0639\u0646\u0627\u06cc \u0648\u06cc\u0631\u0627\u06cc\u0634 \u062f\u0633\u062a\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u060c \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc (Config Push) \u06cc\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u0627\u0628\u0637\u200c\u0647\u0627\u06cc \u062e\u0637 \u0641\u0631\u0645\u0627\u0646 (CLI) \u0645\u062e\u062a\u0635 \u0647\u0631 \u067e\u0644\u062a\u0641\u0631\u0645 \u0627\u0633\u062a. \u0647\u06cc\u0686 API \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u06cc \u0628\u0631\u0627\u06cc \u0686\u0631\u062e\u0634 \u0645\u062a\u0631\u06cc\u0627\u0644 SSH \u062f\u0631 \u0645\u06cc\u0627\u0646 \u0641\u0631\u0648\u0634\u0646\u062f\u06af\u0627\u0646 \u0645\u062e\u062a\u0644\u0641 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f\u060c \u0642\u0627\u0628\u0644\u06cc\u062a \u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0642\u0628\u0644\u06cc (Rollback) \u062f\u0631 \u0635\u0648\u0631\u062a \u0628\u0631\u0648\u0632 \u062e\u0637\u0627 \u062a\u0639\u0628\u06cc\u0647 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a \u0648 \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0645\u062d\u062f\u0648\u062f\u0633\u0627\u0632\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc\u200c\u0634\u062f\u0647\u200c\u06cc \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a (Authentication) \u06a9\u0647 \u0633\u0631\u0648\u0631 SSH \u0645\u062c\u0627\u0632 \u0645\u06cc\u200c\u062f\u0627\u0646\u062f\u060c \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f. \u0627\u06af\u0631 \u0686\u0631\u062e\u0634 \u06a9\u0644\u06cc\u062f \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Key) \u0628\u0627 \u0634\u06a9\u0633\u062a \u0645\u0648\u0627\u062c\u0647 \u0634\u0648\u062f\u060c \u0627\u067e\u0631\u0627\u062a\u0648\u0631\u0647\u0627 \u0628\u0627 \u062e\u0637\u0631 \u0645\u0633\u062f\u0648\u062f \u0634\u062f\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u062e\u0648\u062f \u0628\u0647 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u0648\u0627\u062c\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<h2 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">Credentialz \u0686\u06cc\u0633\u062a\u061f<\/h2>\n<p style=\"direction: rtl; text-align: right\"><a href=\"https:\/\/github.com\/openconfig\/gnsi\/tree\/main\/credentialz\" style=\"color: rgb(0, 102, 204)\">\u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc gNSI<\/a> \u0627\u06cc\u0646 \u0645\u0634\u06a9\u0644 \u0631\u0627 \u0628\u0627 \u062f\u0648 RPC \u062c\u0631\u06cc\u0627\u0646\u06cc \u062d\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u067e\u0648\u0634\u0634 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f<strong style=\"color: rgb(26, 26, 26)\">\u0633\u0637\u062d \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc (account-level)<\/strong>\u0648<strong style=\"color: rgb(26, 26, 26)\">\u0633\u0637\u062d \u0645\u06cc\u0632\u0628\u0627\u0646 (host-level)<\/strong>\u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc SSH:<\/p>\n<ul style=\"direction: rtl; text-align: right\">\n<li><strong style=\"color: rgb(26, 26, 26)\">\u0686\u0631\u062e\u0634 \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u062d\u0633\u0627\u0628 (RotateAccountCredentials)<\/strong>\u2014 \u0686\u0631\u062e\u0634 \u06af\u0630\u0631\u0648\u0627\u0698\u0647\u200c\u0647\u0627 (Passwords)\u060c \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062c\u0627\u0632 (Authorized Keys) \u0648 \u0627\u0635\u0648\u0644 \u0645\u062c\u0627\u0632 (Authorized Principals) \u0628\u0631\u0627\u06cc \u062d\u0633\u0627\u0628\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc<\/li>\n<li><strong style=\"color: rgb(26, 26, 26)\">\u0686\u0631\u062e\u0634 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (RotateHostParameters)<\/strong>\u2014 \u0686\u0631\u062e\u0634 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Keys)\u060c \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Certificates)\u060c \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0639\u0645\u0648\u0645\u06cc \u0645\u0631\u062c\u0639 \u0635\u062f\u0648\u0631 \u06af\u0648\u0627\u0647\u06cc (CA Public Keys)\u060c \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0645\u062c\u0627\u0632 \u0648 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062f\u0633\u062a\u0648\u0631 \u0627\u0635\u0648\u0644 \u0645\u062c\u0627\u0632 (AuthorizedPrincipalsCommand)<\/li>\n<\/ul>\n<p style=\"direction: rtl; text-align: right\">\u0628\u0647 \u0639\u0644\u0627\u0648\u0647 \u062f\u0648 RPC \u06cc\u06a9\u062a\u0627\u06cc\u06cc (Unary) \u0628\u0631\u0627\u06cc \u067e\u06cc\u0634\u200c\u067e\u0631\u0648\u0627\u0632 (Preflight):<\/p>\n<ul style=\"direction: rtl; text-align: right\">\n<li><strong style=\"color: rgb(26, 26, 26)\">CanGenerateKey<\/strong>\u2014 \u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0622\u06cc\u0627 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u06cc\u06a9 \u062c\u0641\u062a \u06a9\u0644\u06cc\u062f (Key Pair) \u062a\u0648\u0644\u06cc\u062f \u06a9\u0646\u062f<\/li>\n<li><strong style=\"color: rgb(26, 26, 26)\">GetPublicKeys<\/strong>\u2014 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0639\u0645\u0648\u0645\u06cc (Public Keys) \u0641\u0639\u0644\u06cc \u0627\u0632 \u0645\u06cc\u0632\u0628\u0627\u0646 (Host)<\/li>\n<\/ul>\n<p style=\"direction: rtl; text-align: right\">\u0647\u0631 \u062f\u0648 RPC \u0627\u0633\u062a\u0631\u06cc\u0645\u06cc\u0646\u06af (Streaming RPCs) \u0627\u0632 \u0627\u0644\u06af\u0648\u06cc \u0645\u0631\u062d\u0644\u0647\u200c\u0628\u0646\u062f\u06cc-\u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc-\u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc (stage-validate-finalize) \u0645\u0634\u0627\u0628\u0647 Certz Rotate \u067e\u06cc\u0631\u0648\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f: \u0627\u0631\u0633\u0627\u0644 \u0645\u062a\u0631\u06cc\u0627\u0644 \u062c\u062f\u06cc\u062f\u060c \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u0622\u0646 (\u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u062a\u0633\u062a SSH \u0628\u0627 \u06a9\u0644\u06cc\u062f \u062c\u062f\u06cc\u062f) \u0648 \u0633\u067e\u0633 \u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc. \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u062d\u0627\u0644\u062a \u0642\u0628\u0644 (Rollback)\u060c \u0627\u0633\u062a\u0631\u06cc\u0645 \u0631\u0627 \u067e\u06cc\u0634 \u0627\u0632 \u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc \u0644\u063a\u0648 \u06a9\u0646\u06cc\u062f.<\/p>\n<p style=\"direction: rtl; text-align: right\">Cisco IOS XR \u0627\u0632 Credentialz \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f<strong style=\"color: rgb(26, 26, 26)\">24.2.1<\/strong>\u0628\u0647 \u062c\u0644\u0648. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u062a\u0645\u0627\u0645\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0628\u0631 \u0631\u0648\u06cc NCS-540 \u0646\u0633\u062e\u0647 25.3.1 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0634\u062f\u0647\u200c\u0627\u0646\u062f. \u0642\u0631\u0627\u0631\u062f\u0627\u062f OpenConfig \u0639\u0628\u0627\u0631\u062a \u0627\u0633\u062a \u0627\u0632 <a href=\"https:\/\/github.com\/openconfig\/gnsi\/blob\/main\/credentialz\/credentialz.proto\" style=\"color: rgb(0, 102, 204)\"><code>credentialz.proto<\/code><\/a>.<\/p>\n<p style=\"direction: rtl; text-align: right\">\u062f\u0631 \u0686\u0627\u0631\u0686\u0648\u0628 AAA\u060c \u0628\u062e\u0634 Credentialz \u0628\u0647 \u0639\u0646\u0648\u0627\u0646<strong style=\"color: rgb(26, 26, 26)\">\u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a (Authentication)<\/strong>\u0628\u0631\u0627\u06cc SSH \u0639\u0645\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0627\u06cc\u0646 \u0628\u062e\u0634 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (Host keys)\u060c \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062c\u0627\u0632 (Authorized keys) \u0648 \u0631\u0645\u0632\u0647\u0627\u06cc \u0639\u0628\u0648\u0631 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06a9\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u0648\u0631\u0648\u062f \u0628\u0647 SSH \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u060c \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u0646\u0645\u0627\u06cc\u062f. (\u0628\u062e\u0634 \u0647\u0645\u062a\u0627\u06cc \u0622\u0646 \u06cc\u0639\u0646\u06cc <a href=\"https:\/\/xrdocs.io\/programmability\/blogs\/gnsi-certz-tls-certificate-lifecycle-on-cisco-ios-xr\" style=\"color: rgb(0, 102, 204)\">Certz<\/a> \u0646\u0642\u0634 \u0645\u0634\u0627\u0628\u0647\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0635\u0641\u062d\u0647 gRPC \u0627\u06cc\u0641\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f.) \u062f\u0631 \u0647\u0631 \u0644\u062d\u0638\u0647 \u062a\u0646\u0647\u0627<strong style=\"color: rgb(26, 26, 26)\">\u06cc\u06a9<\/strong>\u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0631\u0648\u06cc\u0647 \u0627\u0632 \u0631\u0627\u0647 \u062f\u0648\u0631 (RPC) \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Credentialz \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0628\u0627\u0634\u062f.<\/p>\n<hr>\n<h2 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u0686\u0647\u0627\u0631 RPC<\/h2>\n<table style=\"direction: rtl; text-align: right\" class=\"english-numbers\">\n<thead>\n<tr>\n<th>RPC<\/th>\n<th>\u0646\u0648\u0639<\/th>\n<th>\u0639\u0645\u0644\u06a9\u0631\u062f<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">RotateAccountCredentials<\/strong><\/td>\n<td>\u062c\u0631\u06cc\u0627\u0646 \u062f\u0648\u0637\u0631\u0641\u0647 (Bidirectional stream)<\/td>\n<td>\u0686\u0631\u062e\u0634 \u0631\u0645\u0632\u0647\u0627\u06cc \u0639\u0628\u0648\u0631 (Passwords)\u060c \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062c\u0627\u0632 (Authorized Keys) \u0648 \u0627\u0635\u0648\u0644 \u0645\u062c\u0627\u0632 (Authorized Principals) \u0628\u0631\u0627\u06cc \u062d\u0633\u0627\u0628\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc. \u0628\u0631\u0627\u06cc \u0627\u0639\u0645\u0627\u0644 \u0646\u0647\u0627\u06cc\u06cc \u0627\u0632 Finalize \u0648 \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u062d\u0627\u0644\u062a \u0642\u0628\u0644 \u0627\u0632 Rollback \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/td>\n<\/tr>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">RotateHostParameters<\/strong><\/td>\n<td>\u062c\u0631\u06cc\u0627\u0646 \u062f\u0648\u0637\u0631\u0641\u0647 (Bidirectional stream)<\/td>\n<td>\u0686\u0631\u062e\u0634 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Keys) (\u062e\u0627\u0631\u062c\u06cc \u06cc\u0627 \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647)\u060c \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Certificates)\u060c \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0639\u0645\u0648\u0645\u06cc CA\u060c \u0627\u0646\u0648\u0627\u0639 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0645\u062c\u0627\u0632 \u0648 \u062f\u0633\u062a\u0648\u0631 \u0627\u0635\u0648\u0644 \u0645\u062c\u0627\u0632 (AuthorizedPrincipalsCommand). \u0628\u0631\u0627\u06cc \u0627\u0639\u0645\u0627\u0644 \u0646\u0647\u0627\u06cc\u06cc \u0627\u0632 Finalize \u0648 \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u062d\u0627\u0644\u062a \u0642\u0628\u0644 \u0627\u0632 Rollback \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/td>\n<\/tr>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">CanGenerateKey<\/strong><\/td>\n<td>\u062a\u06a9\u200c\u0645\u0642\u062f\u0627\u0631\u06cc (Unary)<\/td>\n<td>\u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0622\u06cc\u0627 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u06cc\u06a9 \u062c\u0641\u062a\u200c\u06a9\u0644\u06cc\u062f (Key Pair) \u0628\u0631\u0627\u06cc \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 (RSA 2048\/4096, ECDSA P-256\/P-521, Ed25519) \u062a\u0648\u0644\u06cc\u062f \u06a9\u0646\u062f \u06cc\u0627 \u062e\u06cc\u0631.<\/td>\n<\/tr>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">GetPublicKeys<\/strong><\/td>\n<td>\u062a\u06a9\u200c\u0645\u0642\u062f\u0627\u0631\u06cc (Unary)<\/td>\n<td>\u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0639\u0645\u0648\u0645\u06cc (Public Keys) \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0641\u0639\u0644\u06cc \u0631\u0648\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u200c\u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc\u200c\u0634\u062f\u0647 (\u0645\u0633\u062a\u0646\u062f\u0627\u062a Cisco)<\/h3>\n<table style=\"direction: rtl; text-align: right\" class=\"english-numbers\">\n<thead>\n<tr>\n<th>\u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 (Algorithm)<\/th>\n<th>\u0627\u0646\u0648\u0627\u0639 \u06a9\u0644\u06cc\u062f (Key types)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">RSA<\/strong><\/td>\n<td>2048, 4096<\/td>\n<\/tr>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">ECDSA<\/strong><\/td>\n<td>P-256, P-521<\/td>\n<\/tr>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">Ed25519<\/strong><\/td>\n<td>\u2014<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote style=\"direction: rtl; text-align: right\">\n<p>OpenConfig<code>KeyGen<\/code>enum \u0647\u0645\u0686\u0646\u06cc\u0646 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f<code>KEY_GEN_SSH_KEY_TYPE_RSA_3072<\/code>\u0648<code>KEY_GEN_SSH_KEY_TYPE_ECDSA_P_384<\/code>. \u062f\u0631 \u0646\u0633\u062e\u0647 IOS XR 25.3.1 (NCS-540)\u060c \u062f\u0633\u062a\u06af\u0627\u0647<strong style=\"color: rgb(26, 26, 26)\">\u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f<\/strong>\u0647\u0631 \u062f\u0648 \u0631\u0627 \u0628\u0627<code>\u06a9\u062f: InvalidArgument<\/code>\u060c \u067e\u06cc\u0627\u0645<code>Can Generate Key:Invaid KeyGen input<\/code>(\u063a\u0644\u0637 \u062a\u0627\u06cc\u067e\u06cc \u062f\u0631 \u062f\u0633\u062a\u06af\u0627\u0647). \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0628\u0647 \u067e\u0646\u062c \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u0641\u0648\u0642 \u0627\u0644\u0632\u0627\u0645\u06cc \u0627\u0633\u062a.<\/p>\n<\/blockquote>\n<hr>\n<h2 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 IOS XR<\/h2>\n<table style=\"direction: rtl; text-align: right\" class=\"english-numbers\">\n<thead>\n<tr>\n<th>\u0646\u0633\u062e\u0647<\/th>\n<th>\u062a\u063a\u06cc\u06cc\u0631\u0627\u062a<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">24.2.1<\/strong><\/td>\n<td>\u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc Credentialz \u0645\u0639\u0631\u0641\u06cc \u0634\u062f\u0646\u062f \u2014 RotateAccountCredentials\u060c RotateHostParameters\u060c CanGenerateKey\u060c GetPublicKeys. \u0686\u0631\u062e\u0634 (Rotation) \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc SSH \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0645\u06cc\u0632\u0628\u0627\u0646.<\/td>\n<\/tr>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">24.2.11<\/strong><\/td>\n<td>\u0628\u0647\u0628\u0648\u062f \u0686\u0631\u062e\u0634 (Rotation) \u0628\u0644\u0627\u062f\u0631\u0646\u06af (\u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f)\u060c \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u200c\u0647\u0627\u06cc \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0628\u0631\u0627\u06cc \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0645\u06cc\u0632\u0628\u0627\u0646.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"direction: rtl; text-align: right\"><strong style=\"color: rgb(26, 26, 26)\">\u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627:<\/strong><\/p>\n<ul style=\"direction: rtl; text-align: right\">\n<li>\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06cc\u06a9 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0648\u06cc \u0631\u0648\u062a\u0631<\/li>\n<li>\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0646\u0633\u062e\u0647 2 \u067e\u0631\u0648\u062a\u06a9\u0644 SSH<\/li>\n<\/ul>\n<hr>\n<h2 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u0645\u0631\u062c\u0639 \u0631\u0627\u0628\u0637 \u062e\u0637 \u0641\u0631\u0645\u0627\u0646 (CLI) \u0628\u0631\u0627\u06cc IOS XR<\/h2>\n<table style=\"direction: rtl; text-align: right\" class=\"english-numbers\">\n<thead>\n<tr>\n<th>\u062f\u0633\u062a\u0648\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc (Configuration command)<\/th>\n<th>\u0639\u0645\u0644\u06a9\u0631\u062f<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>ssh server v2<\/code><\/td>\n<td>\u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0646\u0633\u062e\u0647 2 \u067e\u0631\u0648\u062a\u06a9\u0644 SSH (\u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc Credentialz)<\/td>\n<\/tr>\n<tr>\n<td><code>username<name>group<\/name><\/code><\/td>\n<td>\u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc SSH<\/td>\n<\/tr>\n<tr>\n<td><code>crypto key generate ed25519<\/code><\/td>\n<td>\u062a\u0648\u0644\u06cc\u062f \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 Ed25519 (\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u0628\u0631\u0627\u06cc Credentialz)<code>GenerateKeysRequest<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><code>crypto key generate rsa<\/code><\/td>\n<td>\u062a\u0648\u0644\u06cc\u062f \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 RSA<\/td>\n<\/tr>\n<tr>\n<td><code>crypto key generate ecdsa nistp256<\/code><\/td>\n<td>\u062a\u0648\u0644\u06cc\u062f \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 ECDSA P-256<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table style=\"direction: rtl; text-align: right\" class=\"english-numbers\">\n<thead>\n<tr>\n<th>\u062f\u0633\u062a\u0648\u0631 \u0646\u0645\u0627\u06cc\u0634 \/ \u0627\u062c\u0631\u0627 (Show \/ exec command)<\/th>\n<th>\u0622\u0646\u0686\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>show ssh<\/code><\/td>\n<td>\u0646\u0634\u0633\u062a\u200c\u0647\u0627\u06cc (Sessions) \u0641\u0639\u0627\u0644 SSH<\/td>\n<\/tr>\n<tr>\n<td><code>show ssh server<\/code><\/td>\n<td>\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0648 \u0648\u0636\u0639\u06cc\u062a \u0633\u0631\u0648\u0631 SSH<\/td>\n<\/tr>\n<tr>\n<td><code>show crypto key mypubkey ed25519<\/code><\/td>\n<td>\u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Public Key) \u0627\u0632 \u0646\u0648\u0639 Ed25519<\/td>\n<\/tr>\n<tr>\n<td><code>show crypto key mypubkey rsa<\/code><\/td>\n<td>\u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Public Key) \u0627\u0632 \u0646\u0648\u0639 RSA<\/td>\n<\/tr>\n<tr>\n<td><code>show crypto key mypubkey ecdsa<\/code><\/td>\n<td>\u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Public Key) \u0627\u0632 \u0646\u0648\u0639 ECDSA<\/td>\n<\/tr>\n<tr>\n<td><code>show gnsi state<\/code><\/td>\n<td>\u0648\u0636\u0639\u06cc\u062a \u0632\u06cc\u0631\u0633\u06cc\u0633\u062a\u0645 gNSI (\u0648\u0636\u0639\u06cc\u062a Credentialz \u0648 RDSFS)<\/td>\n<\/tr>\n<tr>\n<td><code>show tech-support gnsi<\/code><\/td>\n<td>\u0628\u0633\u062a\u0647 \u06a9\u0627\u0645\u0644 \u0639\u06cc\u0628\u200c\u06cc\u0627\u0628\u06cc (Diagnostic bundle) \u0628\u0631\u0627\u06cc gNSI (\u0634\u0627\u0645\u0644 \u062a\u0645\u0627\u0645\u06cc \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr>\n<h2 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">RotateAccountCredentials \u2014 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u0686\u0631\u062e\u0634 (Rotate) \u0622\u0646<\/h2>\n<table style=\"direction: rtl; text-align: right\" class=\"english-numbers\">\n<thead>\n<tr>\n<th>\u067e\u06cc\u0627\u0645<\/th>\n<th>\u0639\u0645\u0644\u06a9\u0631\u062f<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 (PasswordRequest)<\/strong><\/td>\n<td>\u062a\u063a\u06cc\u06cc\u0631 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc (\u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062a\u0646 \u0633\u0627\u062f\u0647 \u06cc\u0627 \u0647\u0634 \u0634\u062f\u0647). \u0646\u0633\u062e\u0647 \u0648 \u0632\u0645\u0627\u0646 \u0627\u06cc\u062c\u0627\u062f (timestamp) \u06af\u0646\u062c\u0627\u0646\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<code>\u0632\u0645\u0627\u0646 \u0627\u06cc\u062c\u0627\u062f<\/code>\u0632\u0645\u0627\u0646 (timestamp) \u06af\u0646\u062c\u0627\u0646\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/td>\n<\/tr>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062c\u0627\u0632 (AuthorizedKeysRequest)<\/strong><\/td>\n<td><strong style=\"color: rgb(26, 26, 26)\">\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u0644\u06cc\u0633\u062a \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062c\u0627\u0632 \u0628\u0631\u0627\u06cc SSH \u0628\u062f\u0648\u0646 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631. \u0627\u0646\u0648\u0627\u0639 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0634\u062f\u0647: RSA 2048\/4096, ECDSA P-256\/P-521, Ed25519.<\/strong>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u062c\u0627\u0632 (AuthorizedUsersRequest)<\/td>\n<\/tr>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">\u062a\u0646\u0638\u06cc\u0645 \u0627\u0635\u0648\u0644 \u0645\u062c\u0627\u0632 (Authorized Principals) \u0628\u0631\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a SSH \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u06af\u0648\u0627\u0647\u06cc. \u0627\u0632 \u0645\u0639\u0646\u0627\u0634\u0646\u0627\u0633\u06cc \u0641\u0627\u06cc\u0644 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u062c\u0627\u0632 (AuthorizedPrincipalsFile) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f (\u062c\u0641\u062a\u200c\u0647\u0627\u06cc\u06cc \u0627\u0632 \u0646\u0627\u0645 \u062d\u0633\u0627\u0628\u200c\u0647\u0627 \u0648 \u0646\u0627\u0645\u200c\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc).<\/strong><\/td>\n<td>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc (FinalizeRequest)<code>\u062a\u0623\u06cc\u06cc\u062f \u0646\u0647\u0627\u06cc\u06cc \u0686\u0631\u062e\u0634 (Rotation). \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0642\u062f\u06cc\u0645\u06cc \u0628\u0627\u0637\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/code>\u0645\u0639\u0646\u0627\u0634\u0646\u0627\u0633\u06cc (\u062c\u0641\u062a\u200c\u0647\u0627\u06cc\u06cc \u0627\u0632 \u0646\u0627\u0645\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0646\u0627\u0645\u200c\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc).<\/td>\n<\/tr>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">FinalizeRequest<\/strong><\/td>\n<td>\u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc \u0686\u0631\u062e\u0634 (Rotation). \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0642\u062f\u06cc\u0645\u06cc \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"direction: rtl; text-align: right\">\u062c\u0631\u06cc\u0627\u0646 \u06a9\u0627\u0631 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0627\u0633\u062a: \u0627\u0631\u0633\u0627\u0644 \u06cc\u06a9 \u06cc\u0627 \u0686\u0646\u062f \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647 (Credential) \u2192 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u062e\u0627\u0631\u062c\u06cc (\u062a\u0644\u0627\u0634 \u0628\u0631\u0627\u06cc \u0628\u0631\u0642\u0631\u0627\u0631\u06cc SSH \u0628\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062c\u062f\u06cc\u062f) \u2192 \u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc \u06cc\u0627 \u0644\u063a\u0648.<\/p>\n<h2 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">RotateHostParameters \u2014 \u0622\u0646\u0686\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u062f (Rotate)<\/h2>\n<table style=\"direction: rtl; text-align: right\" class=\"english-numbers\">\n<thead>\n<tr>\n<th>\u067e\u06cc\u0627\u0645<\/th>\n<th>\u0639\u0645\u0644\u06a9\u0631\u062f<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">CaPublicKeyRequest<\/strong><\/td>\n<td>\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc CA (CA Public Key) \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc SSH \u06a9\u0644\u0627\u06cc\u0646\u062a.<\/td>\n<\/tr>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">ServerKeysRequest<\/strong>(\u062e\u0627\u0631\u062c\u06cc)<\/td>\n<td>\u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Keys) \u0648\/\u06cc\u0627 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Certificates) \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u062e\u0627\u0631\u062c\u06cc. \u06a9\u0644\u06cc\u062f \u062e\u0635\u0648\u0635\u06cc \u0648 \u06af\u0648\u0627\u0647\u06cc \u0628\u0647 \u0635\u0648\u0631\u062a base64 \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647\u200c\u0627\u0646\u062f.<\/td>\n<\/tr>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">GenerateKeysRequest<\/strong><\/td>\n<td>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0632 \u062f\u0633\u062a\u06af\u0627\u0647 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Keys) \u062c\u062f\u06cc\u062f. \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc \u0628\u0631\u0627\u06cc \u0627\u0645\u0636\u0627\u06cc \u06af\u0648\u0627\u0647\u06cc \u062f\u0631 \u067e\u0627\u0633\u062e \u0628\u0627\u0632\u06af\u0631\u062f\u0627\u0646\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/td>\n<\/tr>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">AllowedAuthenticationRequest<\/strong><\/td>\n<td>\u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a SSH (SSH Authentication) \u06a9\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0633\u0631\u0627\u0633\u0631\u06cc \u0645\u062c\u0627\u0632 \u0647\u0633\u062a\u0646\u062f (\u0631\u0645\u0632 \u0639\u0628\u0648\u0631\u060c \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc\u060c \u062a\u0639\u0627\u0645\u0644\u06cc \u0628\u0627 \u0635\u0641\u062d\u0647\u200c\u06a9\u0644\u06cc\u062f\u060c \u06af\u0648\u0627\u0647\u06cc). \u067e\u06cc\u0634\u200c\u0641\u0631\u0636: \u0647\u0645\u0647 \u0631\u0648\u0634\u200c\u0647\u0627.<\/td>\n<\/tr>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">AuthorizedPrincipalCheckRequest<\/strong><\/td>\n<td>\u062a\u0646\u0638\u06cc\u0645 (Set)<code>AuthorizedPrincipalsCommand<\/code> \u2014 <code>TOOL_HIBA_DEFAULT<\/code>\u0627\u0646\u062a\u062e\u0627\u0628 \u0628\u0627\u06cc\u0646\u0631\u06cc HIBA \u0628\u0631\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u067e\u0648\u06cc\u0627\u06cc \u0627\u0635\u0644\u06cc (Dynamic Principal Authorization).<\/td>\n<\/tr>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">FinalizeRequest<\/strong><\/td>\n<td>\u062a\u0623\u06cc\u06cc\u062f \u0646\u0647\u0627\u06cc\u06cc (Commit). \u0627\u06af\u0631 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u067e\u06cc\u0634 \u0627\u0632 \u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc \u0628\u0627 \u0634\u06a9\u0633\u062a \u0645\u0648\u0627\u062c\u0647 \u0634\u0648\u062f\u060c \u062c\u0631\u06cc\u0627\u0646 \u0631\u0627 \u0644\u063a\u0648 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 \u0642\u0628\u0644\u06cc \u0628\u0627\u0632\u06af\u0631\u062f\u06cc\u062f.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr>\n<h2 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u0628\u0631\u0631\u0633\u06cc \u0639\u0645\u0644\u06cc: \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc (Credentialz) \u0633\u0631\u062a\u0627\u0633\u0631\u06cc (End-to-End)<\/h2>\n<h3 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627<\/h3>\n<ul style=\"direction: rtl; text-align: right\">\n<li>\u0631\u0648\u062a\u0631 IOS XR \u0628\u0627 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc gRPC \u0648 SSH v2 \u0641\u0639\u0627\u0644 (\u0646\u0633\u062e\u0647 24.2.1 \u06cc\u0627 \u0628\u0627\u0644\u0627\u062a\u0631 \u0628\u0631\u0627\u06cc Credentialz)<\/li>\n<li><a href=\"https:\/\/github.com\/fullstorydev\/grpcurl\" style=\"color: rgb(0, 102, 204)\">grpcurl<\/a> \u0648<code>ssh-keygen<\/code>\u0646\u0635\u0628 \u0634\u062f\u0647<\/li>\n<li>\u067e\u0631\u0648\u062a\u06a9\u0644\u200c\u0647\u0627\u06cc OpenConfig gNSI \u06a9\u0644\u0648\u0646 \u0634\u062f\u0647:<code>git clone https:\/\/github.com\/openconfig\/gnsi.git<\/code><\/li>\n<li>\u06cc\u06a9 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0631\u0648\u06cc \u0631\u0648\u062a\u0631<\/li>\n<\/ul>\n<h3 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u0645\u062d\u06cc\u0637 (\u0627\u06cc\u0633\u062a\u06af\u0627\u0647 \u06a9\u0627\u0631\u06cc)<\/h3>\n<pre><code><span><span># Stage the proto so grpcurl's -import-path \/ -proto resolves cleanly<\/span>\n<\/span><span><span>git<\/span> clone https:\/\/github.com\/openconfig\/gnsi.git \/tmp\/gnsi\n<\/span><span><span>mkdir<\/span> <span>-p<\/span>.\/credz-import\/credentialz\n<\/span><span><span>cp<\/span> \/tmp\/gnsi\/credentialz\/credentialz.proto.\/credz-import\/credentialz\/\n<\/span><span><span>export<\/span> <span>GNSI_IMPORT<\/span><span>=<\/span><span>\"<span>${GNSI_IMPORT<span>:-<\/span>$PWD<span>\/<\/span>credz-import}<\/span>\"<\/span>\n<\/span><span><span>export<\/span> <span>XR<\/span><span>=<\/span><span>\"<span>${XR<span>:?<\/span>set to &lt;router-ip&gt;<span>:<\/span>57400 \u2014 required}<\/span>\"<\/span>\n<\/span><span><span>export<\/span> <span>XR_USER<\/span><span>=<\/span><span>\"<span>${XR_USER<span>:-<\/span>cisco}<\/span>\"<\/span>\n<\/span><span><span>export<\/span> <span>XR_PASS<\/span><span>=<\/span><span>\"<span>${XR_PASS<span>:?<\/span>set XR_PASS \u2014 required (Credentialz needs valid AAA on every call)}<\/span>\"<\/span>\n<\/span><span><span>GRPC_MD<\/span><span>=<\/span><span>(<\/span>-H <span>\"username:<span>${XR_USER}<\/span>\"<\/span> <span>-H<\/span> <span>\"password:<span>${XR_PASS}<\/span>\"<\/span><span>)<\/span>\n<\/span><span><span>PROTO_CREDZ<\/span><span>=<\/span><span>\"credentialz\/credentialz.proto\"<\/span>\n<\/span><\/code><\/pre>\n<blockquote style=\"direction: rtl; text-align: right\">\n<p><code>credentialz.proto<\/code>\u0641\u0627\u0642\u062f<code>\u062f\u0633\u062a\u0648\u0631\u0627\u062a<\/code>import \u0627\u0633\u062a\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646<code>-import-path<\/code>\u062a\u0646\u0647\u0627 \u0628\u0647 \u06cc\u06a9<code>credentialz\/credentialz.proto<\/code>\u0641\u0627\u06cc\u0644 \u062f\u0631 \u0632\u06cc\u0631\u0645\u062c\u0645\u0648\u0639\u0647 \u062e\u0648\u062f \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f. \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u06a9\u0644\u0648\u0646 \u06a9\u0631\u062f\u0646<code>openconfig\/gnmi<\/code>.<\/p>\n<\/blockquote>\n<blockquote style=\"direction: rtl; text-align: right\">\n<p><strong style=\"color: rgb(26, 26, 26)\">\u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637 \u0622\u0632\u0645\u0627\u06cc\u0634\u06af\u0627\u0647\u06cc (Lab only)<\/strong>\u062a\u0645\u0627\u0645\u06cc \u0645\u062b\u0627\u0644\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0627\u0632<code>-plaintext<\/code>(\u0628\u062f\u0648\u0646 TLS) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u062f\u0631 \u0645\u062d\u06cc\u0637 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc (Production)\u060c \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f<code>-plaintext<\/code>\u0628\u0627 \u067e\u0631\u0686\u0645\u200c\u0647\u0627\u06cc<code>-cacert<\/code>, <code>-cert<\/code>\u0648<code>-key<\/code>. \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc TLS\u060c \u0645\u0642\u0627\u0644\u0647 <a href=\"https:\/\/xrdocs.io\/programmability\/blogs\/gnsi-certz-tls-certificate-lifecycle-on-cisco-ios-xr\" style=\"color: rgb(0, 102, 204)\">Certz article<\/a> \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<\/blockquote>\n<h3 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0631\u0648\u062a\u0631 (IOS XR CLI)<\/h3>\n<p style=\"direction: rtl; text-align: right\">\u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 SSH v2 \u0648 \u06cc\u06a9 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc (User Account) \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f:<\/p>\n<pre><code><span>configure\n<\/span><span> ssh server v2\n<\/span><span> username lab\n<\/span><span> group root-lr\n<\/span><span> group cisco-support\n<\/span><span> commit\n<\/span><span>end\n<\/span><\/code><\/pre>\n<h3 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u0641\u0647\u0631\u0633\u062a \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 (Reflection)<\/h3>\n<pre><code><span>grpcurl <span>-plaintext<\/span> <span>\\<\/span>\n<\/span><span> -import-path <span>\"<span>$GNSI_IMPORT<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-proto<\/span> <span>\"<span>$PROTO_CREDZ<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${GRPC_MD<span>[<\/span>@<span>]<\/span>}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${XR}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> list gnsi.credentialz.v1.Credentialz\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u0644\u0637\u0641\u0627\u064b \u0645\u062a\u0646 \u0648\u0631\u0648\u062f\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0631\u062c\u0645\u0647 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0637\u0628\u0642 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0648 \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644\u200c\u0647\u0627\u06cc \u062a\u0639\u06cc\u06cc\u0646\u200c\u0634\u062f\u0647\u060c \u062a\u0631\u062c\u0645\u0647 \u0622\u0646 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u0645.<\/p>\n<pre><code><span>gnsi.credentialz.v1.Credentialz.CanGenerateKey\n<\/span><span>gnsi.credentialz.v1.Credentialz.GetPublicKeys\n<\/span><span>gnsi.credentialz.v1.Credentialz.RotateAccountCredentials\n<\/span><span>gnsi.credentialz.v1.Credentialz.RotateHostParameters\n<\/span><\/code><\/pre>\n<h3 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u0627\u0645\u06a9\u0627\u0646 \u062a\u0648\u0644\u06cc\u062f \u06a9\u0644\u06cc\u062f (preflight)<\/h3>\n<p style=\"direction: rtl; text-align: right\">\u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0631\u0627\u06cc \u0647\u0631 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u060c \u062c\u0641\u062a\u200c\u06a9\u0644\u06cc\u062f (Key Pairs) \u062a\u0648\u0644\u06cc\u062f \u06a9\u0646\u062f \u06cc\u0627 \u062e\u06cc\u0631:<\/p>\n<pre><code><span>grpcurl <span>-plaintext<\/span> <span>\\<\/span>\n<\/span><span> -import-path <span>\"<span>$GNSI_IMPORT<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-proto<\/span> <span>\"<span>$PROTO_CREDZ<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${GRPC_MD<span>[<\/span>@<span>]<\/span>}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-d<\/span> <span>'{\"keyParams\": \"KEY_GEN_SSH_KEY_TYPE_EDDSA_ED25519\"}'<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${XR}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> gnsi.credentialz.v1.Credentialz.CanGenerateKey\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u067e\u0627\u0633\u062e \u0631\u0648\u062a\u0631 (Router response)<\/p>\n<pre><code><span><span>{<\/span>\n<\/span><span> <span>\"canGenerate\"<\/span><span>:<\/span> <span>true<\/span>\n<\/span><span><span>}<\/span>\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u0628\u0631\u0627\u06cc \u0633\u0627\u06cc\u0631 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u200c\u0647\u0627 \u062a\u06a9\u0631\u0627\u0631 \u06a9\u0646\u06cc\u062f \u2014 \u0647\u0645\u0647 \u0628\u0627\u0632\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u0646\u062f<code>canGenerate: true<\/code>\u0631\u0648\u06cc Cisco 8000:<\/p>\n<pre><code><span><span># RSA 4096<\/span>\n<\/span><span>grpcurl <span>-plaintext<\/span> <span>\\<\/span>\n<\/span><span> -import-path <span>\"<span>$GNSI_IMPORT<\/span>\"<\/span> <span>-proto<\/span> <span>\"<span>$PROTO_CREDZ<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${GRPC_MD<span>[<\/span>@<span>]<\/span>}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-d<\/span> <span>'{\"keyParams\": \"KEY_GEN_SSH_KEY_TYPE_RSA_4096\"}'<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${XR}<\/span>\"<\/span> gnsi.credentialz.v1.Credentialz.CanGenerateKey\n<\/span><span><span># RSA 2048<\/span>\n<\/span><span>grpcurl <span>-plaintext<\/span> <span>\\<\/span>\n<\/span><span> -import-path <span>\"<span>$GNSI_IMPORT<\/span>\"<\/span> <span>-proto<\/span> <span>\"<span>$PROTO_CREDZ<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${GRPC_MD<span>[<\/span>@<span>]<\/span>}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-d<\/span> <span>'{\"keyParams\": \"KEY_GEN_SSH_KEY_TYPE_RSA_2048\"}'<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${XR}<\/span>\"<\/span> gnsi.credentialz.v1.Credentialz.CanGenerateKey\n<\/span><span><span># ECDSA P-256<\/span>\n<\/span><span>grpcurl <span>-plaintext<\/span> <span>\\<\/span>\n<\/span><span> -import-path <span>\"<span>$GNSI_IMPORT<\/span>\"<\/span> <span>-proto<\/span> <span>\"<span>$PROTO_CREDZ<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${GRPC_MD<span>[<\/span>@<span>]<\/span>}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-d<\/span> <span>'{\"keyParams\": \"KEY_GEN_SSH_KEY_TYPE_ECDSA_P_256\"}'<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${XR}<\/span>\"<\/span> gnsi.credentialz.v1.Credentialz.CanGenerateKey\n<\/span><span><span># ECDSA P-521<\/span>\n<\/span><span>grpcurl <span>-plaintext<\/span> <span>\\<\/span>\n<\/span><span> -import-path <span>\"<span>$GNSI_IMPORT<\/span>\"<\/span> <span>-proto<\/span> <span>\"<span>$PROTO_CREDZ<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${GRPC_MD<span>[<\/span>@<span>]<\/span>}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-d<\/span> <span>'{\"keyParams\": \"KEY_GEN_SSH_KEY_TYPE_ECDSA_P_521\"}'<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${XR}<\/span>\"<\/span> gnsi.credentialz.v1.Credentialz.CanGenerateKey\n<\/span><\/code><\/pre>\n<h3 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0639\u0645\u0648\u0645\u06cc (GetPublicKeys)<\/h3>\n<p style=\"direction: rtl; text-align: right\">\u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0639\u0645\u0648\u0645\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Public Keys) \u0641\u0639\u0644\u06cc:<\/p>\n<pre><code><span>grpcurl <span>-plaintext<\/span> <span>\\<\/span>\n<\/span><span> -import-path <span>\"<span>$GNSI_IMPORT<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-proto<\/span> <span>\"<span>$PROTO_CREDZ<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${GRPC_MD<span>[<\/span>@<span>]<\/span>}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-d<\/span> <span>'{}'<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${XR}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> gnsi.credentialz.v1.Credentialz.GetPublicKeys\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u067e\u0627\u0633\u062e (\u06a9\u0648\u062a\u0627\u0647 \u0634\u062f\u0647 \u2014 \u06cc\u06a9 \u0648\u0631\u0648\u062f\u06cc \u0628\u0631\u0627\u06cc \u0647\u0631 \u0646\u0648\u0639 \u06a9\u0644\u06cc\u062f\u060c<strong style=\"color: rgb(26, 26, 26)\">\u0647\u0645\u0627\u0646\u200c\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u06cc\u06a9 NCS-540 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0646\u0633\u062e\u0647 25.3.1 \u0645\u0634\u0627\u0647\u062f\u0647 \u0634\u062f<\/strong>):<\/p>\n<pre><code><span><span>{<\/span>\n<\/span><span> <span>\"publicKeys\"<\/span><span>:<\/span> <span>[<\/span>\n<\/span><span> <span>{<\/span> <span>\"publicKey\"<\/span><span>:<\/span> <span>\"c3NoLXJzYSBBQUFBQjNOemFD...\"<\/span><span>,<\/span> <span>\"keyType\"<\/span><span>:<\/span> <span>\"KEY_TYPE_RSA_2048\"<\/span> <span>}<\/span><span>,<\/span>\n<\/span><span> <span>{<\/span> <span>\"publicKey\"<\/span><span>:<\/span> <span>\"c3NoLWRzcyBBQUFBQjNOemFD...\"<\/span> <span>}<\/span><span>,<\/span>\n<\/span><span> <span>{<\/span> <span>\"publicKey\"<\/span><span>:<\/span> <span>\"ZWNkc2Etc2hhMi1uaXN0cDUy...\"<\/span><span>,<\/span> <span>\"keyType\"<\/span><span>:<\/span> <span>\"KEY_TYPE_ECDSA_P_521\"<\/span> <span>}<\/span><span>,<\/span>\n<\/span><span> <span>{<\/span> <span>\"publicKey\"<\/span><span>:<\/span> <span>\"ZWNkc2Etc2hhMi1uaXN0cDM4...\"<\/span> <span>}<\/span><span>,<\/span>\n<\/span><span> <span>{<\/span> <span>\"publicKey\"<\/span><span>:<\/span> <span>\"ZWNkc2Etc2hhMi1uaXN0cDI1...\"<\/span><span>,<\/span> <span>\"keyType\"<\/span><span>:<\/span> <span>\"KEY_TYPE_ECDSA_P_256\"<\/span> <span>}<\/span><span>,<\/span>\n<\/span><span> <span>{<\/span> <span>\"publicKey\"<\/span><span>:<\/span> <span>\"c3NoLWVkMjU1MTkgQUFBQUMz...\"<\/span><span>,<\/span> <span>\"keyType\"<\/span><span>:<\/span> <span>\"KEY_TYPE_ED25519\"<\/span> <span>}<\/span>\n<\/span><span> <span>]<\/span>\n<\/span><span><span>}<\/span>\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u0647\u0631<code>\u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc (publicKey)<\/code>\u062f\u0631 \u0642\u0627\u0644\u0628 OpenSSH \u0628\u0627 \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc base64 \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc SSH \u062e\u0627\u0645\u060c \u0627\u0632 \u062f\u0633\u062a\u0648\u0631<code>echo \"<base64>\" | base64 -d<\/base64><\/code>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<blockquote style=\"direction: rtl; text-align: right\">\n<p><strong style=\"color: rgb(26, 26, 26)\">\u062f\u0631 \u0646\u0633\u062e\u0647 25.3.1:<\/strong>\u067e\u0627\u0633\u062e \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0634\u0627\u0645\u0644 \u06cc\u06a9<strong style=\"color: rgb(26, 26, 26)\">DSA<\/strong> (<code>ssh-dss<\/code>) \u0648 \u06cc\u06a9<strong style=\"color: rgb(26, 26, 26)\">ECDSA P-384<\/strong>\u06a9\u0644\u06cc\u062f \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Key) \u062f\u0631 \u06a9\u0646\u0627\u0631 \u0686\u0647\u0627\u0631 \u0645\u0648\u0631\u062f \u0645\u0639\u0645\u0648\u0644 \u0627\u0633\u062a. \u0647\u0631 \u062f\u0648 \u0628\u0627<code>keyType<\/code><strong style=\"color: rgb(26, 26, 26)\">\u062d\u0630\u0641 \u0634\u062f\u0647<\/strong>\u0628\u0627\u0632\u0645\u06cc\u200c\u06af\u0631\u062f\u0646\u062f \u2014 DSA \u062a\u0648\u0633\u0637 OpenConfig Credentialz \u0645\u062f\u0644\u200c\u0633\u0627\u0632\u06cc \u0646\u0634\u062f\u0647 \u0627\u0633\u062a \u0648 P-384 \u062f\u0631 \u067e\u0631\u0648\u062a\u0648 (proto) \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0627\u0645\u0627 \u062a\u0648\u0633\u0637 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0646\u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u06af\u0631 \u062e\u0637\u200c\u0645\u0634\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc (Security Baseline) \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0646\u0645\u06cc\u200c\u062f\u0647\u062f<code>ssh-dss<\/code>\u060c \u0622\u0646 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u06cc\u06a9<code>RotateHostParameters: generateKeys<\/code>\u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f (\u0628\u0628\u06cc\u0646\u06cc\u062f <a href=\"https:\/\/xrdocs.io\/programmability\/blogs\/gnsi-credentialz-ssh-credential-rotation-on-cisco-ios-xr#generatekeys-is-destructive\" style=\"color: rgb(0, 102, 204)\">GenerateKeys \u0645\u062e\u0631\u0628 \u0627\u0633\u062a<\/a>).<\/p>\n<\/blockquote>\n<h3 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">RotateAccountCredentials: \u0686\u0631\u062e\u0634 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062c\u0627\u0632 (Authorized Keys)<\/h3>\n<p style=\"direction: rtl; text-align: right\">\u06cc\u06a9 \u062c\u0641\u062a \u06a9\u0644\u06cc\u062f SSH \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u0648 \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc (Public Key) \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u06a9\u0644\u06cc\u062f \u0645\u062c\u0627\u0632 (Authorized Key) \u0628\u0631\u0627\u06cc \u06cc\u06a9<strong style=\"color: rgb(26, 26, 26)\">\u063a\u06cc\u0631 \u0645\u062f\u06cc\u0631 (non-admin)<\/strong>\u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc (\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0647\u0645\u0627\u0646<code>cisco<\/code>\u06a9\u0627\u0631\u0628\u0631\u06cc \u06a9\u0647 \u0628\u0627 \u0622\u0646 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a gRPC \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u06cc\u062f\u060c \u062e\u0637\u0631 \u0642\u0641\u0644 \u0634\u062f\u0646 \u062e\u0648\u062f\u062a\u0627\u0646 \u0627\u0632 \u062a\u0645\u0627\u0645\u06cc \u062c\u0631\u06cc\u0627\u0646\u200c\u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f). \u0641\u06cc\u0644\u062f<code>authorizedKey<\/code>\u0628\u0627\u06cc\u062f \u0628\u0647 \u0635\u0648\u0631\u062a base64 \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0628\u0627\u0634\u062f:<\/p>\n<pre><code><span>ssh-keygen <span>-t<\/span> ed25519 <span>-f<\/span> \/tmp\/credz-test-key <span>-N<\/span> <span>\"\"<\/span> <span>-C<\/span> <span>\"credz-test@lab\"<\/span>\n<\/span><span><span>PUBKEY_B64<\/span><span>=<\/span><span><span>$(<\/span>base64 <span>&lt;<\/span> \/tmp\/credz-test-key.pub <span>|<\/span> <span>tr<\/span> <span>-d<\/span> <span>'\\n'<\/span><span>)<\/span><\/span>\n<\/span><span><span>CREATED_ON<\/span><span>=<\/span><span><span>$(<\/span><span>date<\/span> +%s<span>)<\/span><\/span>\n<\/span><span>grpcurl <span>-plaintext<\/span> <span>\\<\/span>\n<\/span><span> -import-path <span>\"<span>$GNSI_IMPORT<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-proto<\/span> <span>\"<span>$PROTO_CREDZ<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${GRPC_MD<span>[<\/span>@<span>]<\/span>}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-d<\/span> <span>'@'<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${XR}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> gnsi.credentialz.v1.Credentialz.RotateAccountCredentials <span>&lt;&lt;<\/span><span>EOF\n<\/span><\/span><span><span>{\"credential\":{\"credentials\":[{\"account\":\"mike\",\"authorizedKeys\":[{\"authorizedKey\":\"<span>${PUBKEY_B64}<\/span>\",\"keyType\":\"KEY_TYPE_ED25519\"}],\"version\":\"keys-mike-v1\",\"createdOn\":\"<span>${CREATED_ON}<\/span>\"}]}}\n<\/span><\/span><span><span>{\"finalize\":{}}\n<\/span><\/span><span><span>EOF<\/span>\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u067e\u0627\u0633\u062e \u0631\u0648\u062a\u0631 (Router response)<\/p>\n<pre><code><span><span>{<\/span>\n<\/span><span> <span>\"credential\"<\/span><span>:<\/span> <span>{<\/span><span>}<\/span>\n<\/span><span><span>}<\/span>\n<\/span><span><span>{<\/span><span>}<\/span>\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u067e\u0627\u0633\u062e \u0627\u0648\u0644\u060c \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647 (Credential) \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u067e\u0627\u0633\u062e \u062f\u0648\u0645\u060c \u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc\u200c\u0646\u0645\u0627\u06cc\u062f. \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062c\u0627\u0632 (Authorized Keys) \u0642\u062f\u06cc\u0645\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<blockquote style=\"direction: rtl; text-align: right\">\n<p><strong style=\"color: rgb(26, 26, 26)\">\u0645\u0631\u062d\u0644\u0647 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc (Validation):<\/strong>\u062f\u0631 \u06cc\u06a9 \u06af\u0631\u062f\u0634 \u06a9\u0627\u0631 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc (Production)\u060c \u0628\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647 \u0648 \u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc\u060c \u06cc\u06a9 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062f\u0648\u0645 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u062a\u0627 SSH \u0631\u0627 \u0628\u0627 \u06a9\u0644\u06cc\u062f \u062c\u062f\u06cc\u062f \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f. \u0627\u06af\u0631 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0628\u0627 \u0634\u06a9\u0633\u062a \u0645\u0648\u0627\u062c\u0647 \u0634\u062f\u060c \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u062d\u0627\u0644\u062a \u0642\u0628\u0644 (Rollback)\u060c \u062c\u0631\u06cc\u0627\u0646 \u0631\u0627 \u0628\u0627 \u0641\u0634\u0631\u062f\u0646 (Ctrl+C) \u0644\u063a\u0648 \u06a9\u0646\u06cc\u062f.<\/p>\n<\/blockquote>\n<h3 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u062a\u0623\u06cc\u06cc\u062f \u0627\u0639\u062a\u0628\u0627\u0631 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062f\u0631 IOS XR<\/h3>\n<p style=\"direction: rtl; text-align: right\">\u067e\u0633 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631 RotateAccountCredentials\u060c \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062c\u0627\u0632 (Authorized Keys) \u0627\u0639\u0645\u0627\u0644 \u0634\u062f\u0647\u200c\u0627\u0646\u062f:<\/p>\n<pre><code><span>show ssh server\n<\/span><span>show gnsi state\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u06cc\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 gRPC \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f \u0628\u0627<code>GetPublicKeys<\/code>(\u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f <a href=\"https:\/\/xrdocs.io\/programmability\/blogs\/gnsi-credentialz-ssh-credential-rotation-on-cisco-ios-xr#verify-on-ios-xr\" style=\"color: rgb(0, 102, 204)\">Verify on IOS XR<\/a> \u0628\u0631\u0627\u06cc \u0628\u0644\u0648\u06a9 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0627\u0645\u0644).<\/p>\n<h3 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">RotateAccountCredentials: \u0686\u0631\u062e\u0634 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 (Password)<\/h3>\n<p style=\"direction: rtl; text-align: right\">\u062a\u063a\u06cc\u06cc\u0631 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc.<strong style=\"color: rgb(26, 26, 26)\">\u0627\u0632 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u063a\u06cc\u0631\u0645\u062f\u06cc\u0631 (non-admin) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<\/strong>(\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644<code>mike<\/code>\u060c \u0646\u0647 \u062d\u0633\u0627\u0628 gRPC rotate-authority<code>cisco<\/code>) \u062a\u0627 \u06cc\u06a9 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0627\u0634\u062a\u0628\u0627\u0647 \u0628\u0627\u0639\u062b \u0642\u0641\u0644 \u0634\u062f\u0646 \u0634\u0645\u0627 \u0627\u0632 \u0635\u0641\u062d\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a (management plane) \u0646\u0634\u0648\u062f:<\/p>\n<pre><code><span><span>CREATED_ON<\/span><span>=<\/span><span><span>$(<\/span><span>date<\/span> +%s<span>)<\/span><\/span>\n<\/span><span>grpcurl <span>-plaintext<\/span> <span>\\<\/span>\n<\/span><span> -import-path <span>\"<span>$GNSI_IMPORT<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-proto<\/span> <span>\"<span>$PROTO_CREDZ<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${GRPC_MD<span>[<\/span>@<span>]<\/span>}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-d<\/span> <span>'@'<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${XR}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> gnsi.credentialz.v1.Credentialz.RotateAccountCredentials <span>&lt;&lt;<\/span><span>EOF\n<\/span><\/span><span><span>{\"password\":{\"accounts\":[{\"account\":\"mike\",\"password\":{\"plaintext\":\"NewSecurePass123\"},\"version\":\"pwd-mike-v1\",\"createdOn\":\"<span>${CREATED_ON}<\/span>\"}]}}\n<\/span><\/span><span><span>{\"finalize\":{}}\n<\/span><\/span><span><span>EOF<\/span>\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u067e\u0627\u0633\u062e \u0631\u0648\u062a\u0631 \u062f\u0631 IOS XR 25.3.1 (NCS-540):<\/p>\n<pre><code><span><span>{<\/span> <span>\"password\"<\/span><span>:<\/span> <span>{<\/span><span>}<\/span> <span>}<\/span>\n<\/span><span><span>{<\/span><span>}<\/span>\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062c\u062f\u06cc\u062f \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0628\u0631\u0627\u06cc gRPC AAA \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<pre><code><span>grpcurl <span>-plaintext<\/span> -import-path <span>\"<span>$GNSI_IMPORT<\/span>\"<\/span> <span>-proto<\/span> <span>\"<span>$PROTO_CREDZ<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-H<\/span> <span>\"username:mike\"<\/span> <span>-H<\/span> <span>\"password:NewSecurePass123\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-d<\/span> <span>'{}'<\/span> <span>\"<span>${XR}<\/span>\"<\/span> gnsi.credentialz.v1.Credentialz.GetPublicKeys\n<\/span><span><span># returns publicKeys[\u2026]<\/span>\n<\/span><span>grpcurl <span>-plaintext<\/span> -import-path <span>\"<span>$GNSI_IMPORT<\/span>\"<\/span> <span>-proto<\/span> <span>\"<span>$PROTO_CREDZ<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-H<\/span> <span>\"username:mike\"<\/span> <span>-H<\/span> <span>\"password:OLD-PASSWORD\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-d<\/span> <span>'{}'<\/span> <span>\"<span>${XR}<\/span>\"<\/span> gnsi.credentialz.v1.Credentialz.GetPublicKeys\n<\/span><span><span># ERROR: Code: Unauthenticated, Message: authentication failed<\/span>\n<\/span><\/code><\/pre>\n<h3 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">RotateHostParameters: \u062a\u0648\u0644\u06cc\u062f \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Keys) \u062c\u062f\u06cc\u062f<\/h3>\n<blockquote style=\"direction: rtl; text-align: right\">\n<p><strong style=\"color: rgb(26, 26, 26)\">\u062f\u0633\u062a\u0648\u0631 GenerateKeys \u0645\u062e\u0631\u0628 \u0627\u0633\u062a.<\/strong>\u06cc\u06a9 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u062a\u06a9\u06cc<code>generateKeys<\/code>\u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0628\u0627\u0639\u062b \u067e\u0627\u06a9 \u0634\u062f\u0646<strong style=\"color: rgb(26, 26, 26)\">\u062a\u0645\u0627\u0645 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Key) \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u200c\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0627\u0632 \u062c\u0645\u0644\u0647 \u0645\u0648\u0627\u0631\u062f\u06cc \u06a9\u0647 \u067e\u0631\u0648\u062a\u06a9\u0644 \u0642\u0627\u062f\u0631 \u0628\u0647 \u0628\u0627\u0632\u062a\u0648\u0644\u06cc\u062f \u0622\u0646\u200c\u0647\u0627 \u0646\u06cc\u0633\u062a (\u0645\u0627\u0646\u0646\u062f DSA \u0648 ECDSA-P-384). \u0647\u0645\u06cc\u0634\u0647<\/strong>\u062a\u0645\u0627\u0645 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u062d\u0641\u0638 \u06a9\u0646\u06cc\u062f \u0631\u0627<strong style=\"color: rgb(26, 26, 26)\">\u062f\u0631 \u06cc\u06a9<\/strong>\u0644\u06cc\u0633\u062a keyParams<code>\u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/code>\u0644\u0637\u0641\u0627\u064b \u0645\u062a\u0646 \u06cc\u0627 \u0644\u06cc\u0633\u062a \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0631\u062c\u0645\u0647 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0637\u0628\u0642 \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644\u200c\u0647\u0627\u06cc \u062f\u0642\u06cc\u0642 \u0634\u0645\u0627\u060c \u0641\u0631\u0622\u06cc\u0646\u062f \u062a\u0631\u062c\u0645\u0647 \u0631\u0627 \u0622\u063a\u0627\u0632 \u06a9\u0646\u0645.<\/p>\n<\/blockquote>\n<p style=\"direction: rtl; text-align: right\">\u062e\u0637 \u067e\u0627\u06cc\u0647 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u06cc \u0628\u0631\u0627\u06cc \u062a\u0645\u0627\u0633 \u2014 \u0628\u0627\u0632\u062a\u0648\u0644\u06cc\u062f \u0686\u0647\u0627\u0631 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u06cc \u06a9\u0647 IOS XR 25.3.1 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0627\u0632 \u0637\u0631\u06cc\u0642 Credentialz \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u062f\u0631 \u06cc\u06a9 \u062a\u0631\u0627\u06a9\u0646\u0634:<\/p>\n<pre><code><span>grpcurl <span>-plaintext<\/span> <span>\\<\/span>\n<\/span><span> -import-path <span>\"<span>$GNSI_IMPORT<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-proto<\/span> <span>\"<span>$PROTO_CREDZ<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${GRPC_MD<span>[<\/span>@<span>]<\/span>}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-d<\/span> <span>'@'<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${XR}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> gnsi.credentialz.v1.Credentialz.RotateHostParameters <span>&lt;&lt;<\/span><span>'EOF'\n<\/span><\/span><span><span>{\"generateKeys\":{\"keyParams\":[\n<\/span><\/span><span><span> \"KEY_GEN_SSH_KEY_TYPE_RSA_2048\",\n<\/span><\/span><span><span> \"KEY_GEN_SSH_KEY_TYPE_ECDSA_P_256\",\n<\/span><\/span><span><span> \"KEY_GEN_SSH_KEY_TYPE_ECDSA_P_521\",\n<\/span><\/span><span><span> \"KEY_GEN_SSH_KEY_TYPE_EDDSA_ED25519\"]}}\n<\/span><\/span><span><span>{\"finalize\":{}}\n<\/span><\/span><span><span>EOF<\/span>\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u067e\u0627\u0633\u062e \u0631\u0648\u062a\u0631 (Router response)<\/p>\n<pre><code><span><span>{<\/span>\n<\/span><span> <span>\"generateKeys\"<\/span><span>:<\/span> <span>{<\/span>\n<\/span><span> <span>\"publicKeys\"<\/span><span>:<\/span> <span>[<\/span>\n<\/span><span> <span>{<\/span> <span>\"publicKey\"<\/span><span>:<\/span> <span>\"c3NoLXJzYS...\"<\/span><span>,<\/span> <span>\"keyType\"<\/span><span>:<\/span> <span>\"KEY_TYPE_RSA_2048\"<\/span> <span>}<\/span><span>,<\/span>\n<\/span><span> <span>{<\/span> <span>\"publicKey\"<\/span><span>:<\/span> <span>\"ZWNkc2Etc2hhMi1uaXN0cDI1...\"<\/span><span>,<\/span><span>\"keyType\"<\/span><span>:<\/span> <span>\"KEY_TYPE_ECDSA_P_256\"<\/span> <span>}<\/span><span>,<\/span>\n<\/span><span> <span>{<\/span> <span>\"publicKey\"<\/span><span>:<\/span> <span>\"ZWNkc2Etc2hhMi1uaXN0cDUy...\"<\/span><span>,<\/span><span>\"keyType\"<\/span><span>:<\/span> <span>\"KEY_TYPE_ECDSA_P_521\"<\/span> <span>}<\/span><span>,<\/span>\n<\/span><span> <span>{<\/span> <span>\"publicKey\"<\/span><span>:<\/span> <span>\"c3NoLWVkMjU1MTkg...\"<\/span><span>,<\/span> <span>\"keyType\"<\/span><span>:<\/span> <span>\"KEY_TYPE_ED25519\"<\/span> <span>}<\/span>\n<\/span><span> <span>]<\/span>\n<\/span><span> <span>}<\/span>\n<\/span><span><span>}<\/span>\n<\/span><span><span>{<\/span><span>}<\/span>\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u0647\u0631 \u0648\u0631\u0648\u062f\u06cc \u062f\u0631<code>publicKeys<\/code>\u0634\u0627\u0645\u0644 \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc (Public Key) \u062a\u0627\u0632\u0647 \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 (\u0628\u0627 \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc base64) \u0627\u0633\u062a. \u062f\u0631 \u06cc\u06a9 \u06af\u0631\u062f\u0634 \u06a9\u0627\u0631 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc (Production)\u060c \u0627\u06cc\u0646 \u06a9\u0644\u06cc\u062f\u0647\u0627 \u0631\u0627 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u06a9\u0631\u062f\u0647\u060c \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0627 CA \u062e\u0648\u062f \u0627\u0645\u0636\u0627 \u06a9\u0646\u06cc\u062f \u0648 \u0633\u067e\u0633 \u0642\u0628\u0644 \u0627\u0632 \u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc\u060c \u06cc\u06a9<code>ServerKeysRequest<\/code>\u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u06af\u0648\u0627\u0647\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Certificate) \u0627\u0631\u0633\u0627\u0644 \u0646\u0645\u0627\u06cc\u06cc\u062f.<\/p>\n<blockquote style=\"direction: rtl; text-align: right\">\n<p><strong style=\"color: rgb(26, 26, 26)\">\u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc\u200c\u0647\u0627\u06cc \u062a\u06a9\u200c\u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u06cc \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f (Greenfield).<\/strong> A <code>generateKeys<\/code>\u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0628\u0627 \u06cc\u06a9 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u060c \u062a\u0645\u0627\u0645 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Key) \u062f\u06cc\u06af\u0631 \u0631\u0627 \u067e\u0627\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f \u2014 \u0648 DSA \/ ECDSA-P-384<strong style=\"color: rgb(26, 26, 26)\">\u063a\u06cc\u0631\u0642\u0627\u0628\u0644 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0647\u0633\u062a\u0646\u062f<\/strong>\u0627\u0632 \u0637\u0631\u06cc\u0642 Credentialz \u0632\u06cc\u0631\u0627 \u0642\u0627\u0628\u0644\u06cc\u062a<code>CanGenerateKey<\/code>\u0647\u0631 \u062f\u0648 \u0631\u0627 \u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u0632 \u0641\u0631\u0645\u062a \u0686\u0646\u062f-\u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u06cc (Multi-algo) \u0628\u0627\u0644\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0645\u06af\u0631 \u0627\u06cc\u0646\u06a9\u0647 \u0648\u0627\u0642\u0639\u0627\u064b \u0642\u0635\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u0645\u062e\u0632\u0646 \u06a9\u0644\u06cc\u062f \u0645\u06cc\u0632\u0628\u0627\u0646 \u0631\u0627 \u067e\u0627\u06a9\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<\/blockquote>\n<h3 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">RotateHostParameters: \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06a9\u0644\u06cc\u062f \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Key) \u062e\u0627\u0631\u062c\u06cc<\/h3>\n<blockquote style=\"direction: rtl; text-align: right\">\n<p><strong style=\"color: rgb(26, 26, 26)\">\u062a\u0639\u0647\u062f \u062c\u0632\u0626\u06cc \u0645\u062e\u0631\u0628 \u062f\u0631 \u0646\u0633\u062e\u0647 25.3.1.<\/strong>\u0633\u0631\u0648\u0631<code>serverKeys<\/code>\u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc (finalize) \u0628\u0627\u0632\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f<code>\u06a9\u062f: \u0646\u0627\u0634\u0646\u0627\u062e\u062a\u0647 \/ \"\u0646\u0648\u0634\u062a\u0646 \u0645\u062a\u0627\u062f\u06cc\u062a\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062f... \u0686\u0646\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u06cc\u0627 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f<\/code>, <strong style=\"color: rgb(26, 26, 26)\">\u0627\u0645\u0627 \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632 \u06a9\u0644\u06cc\u062f \u0645\u06cc\u0632\u0628\u0627\u0646 (host-key store) \u0647\u0645\u0686\u0646\u0627\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f<\/strong>\u2014 \u062a\u0645\u0627\u0645 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 \u0645\u0648\u062c\u0648\u062f \u067e\u0627\u06a9 \u0634\u062f\u0647 \u0648 \u06a9\u0644\u06cc\u062f \u062e\u0635\u0648\u0635\u06cc \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0628\u0647 \u062a\u0646\u0647\u0627 \u06a9\u0644\u06cc\u062f \u0641\u0639\u0627\u0644 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f. \u06cc\u06a9 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc<code>generateKeys<\/code>\u0622\u0645\u0627\u062f\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u06cc\u0646 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f (\u0628\u0628\u06cc\u0646\u06cc\u062f <a href=\"https:\/\/xrdocs.io\/programmability\/blogs\/gnsi-credentialz-ssh-credential-rotation-on-cisco-ios-xr#generatekeys-is-destructive\" style=\"color: rgb(0, 102, 204)\">GenerateKeys \u0645\u062e\u0631\u0628 \u0627\u0633\u062a<\/a>).<\/p>\n<\/blockquote>\n<p style=\"direction: rtl; text-align: right\">\u06cc\u06a9 \u06a9\u0644\u06cc\u062f \u0645\u06cc\u0632\u0628\u0627\u0646 SSH (SSH Host Key) \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u062f\u0631 \u062e\u0627\u0631\u062c \u0631\u0627 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f. \u0641\u06cc\u0644\u062f<code>privateKey<\/code>\u0628\u0647 \u0635\u0648\u0631\u062a base64 \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<pre><code><span>ssh-keygen <span>-t<\/span> ed25519 <span>-f<\/span> \/tmp\/credz-ext-hostkey <span>-N<\/span> <span>\"\"<\/span> <span>-C<\/span> <span>\"ext-host@lab\"<\/span>\n<\/span><span><span>PRIVKEY_B64<\/span><span>=<\/span><span><span>$(<\/span>base64 <span>&lt;<\/span> \/tmp\/credz-ext-hostkey <span>|<\/span> <span>tr<\/span> <span>-d<\/span> <span>'\\n'<\/span><span>)<\/span><\/span>\n<\/span><span><span>CREATED_ON<\/span><span>=<\/span><span><span>$(<\/span><span>date<\/span> +%s<span>)<\/span><\/span>\n<\/span><span>grpcurl <span>-plaintext<\/span> <span>\\<\/span>\n<\/span><span> -import-path <span>\"<span>$GNSI_IMPORT<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-proto<\/span> <span>\"<span>$PROTO_CREDZ<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${GRPC_MD<span>[<\/span>@<span>]<\/span>}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-d<\/span> <span>'@'<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${XR}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> gnsi.credentialz.v1.Credentialz.RotateHostParameters <span>&lt;&lt;<\/span><span>EOF\n<\/span><\/span><span><span>{\"serverKeys\":{\"authArtifacts\":[{\"privateKey\":\"<span>${PRIVKEY_B64}<\/span>\"}],\"version\":\"hostkey-ext-v1\",\"createdOn\":\"<span>${CREATED_ON}<\/span>\"}}\n<\/span><\/span><span><span>{\"finalize\":{}}\n<\/span><\/span><span><span>EOF<\/span>\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u067e\u0627\u0633\u062e \u0645\u0633\u062a\u0646\u062f (\u0645\u0634\u062e\u0635\u0627\u062a \u0641\u0646\u06cc) \u062f\u0631 \u06cc\u06a9 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0633\u0627\u0644\u0645:<\/p>\n<pre><code><span><span>{<\/span> <span>\"serverKeys\"<\/span><span>:<\/span> <span>{<\/span><span>}<\/span> <span>}<\/span>\n<\/span><span><span>{<\/span><span>}<\/span>\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u067e\u0627\u0633\u062e \u0645\u0634\u0627\u0647\u062f\u0647\u200c\u0634\u062f\u0647 \u062f\u0631 NCS-540 \u0646\u0633\u062e\u0647 25.3.1:<\/p>\n<pre><code><span><span>{<\/span> <span>\"serverKeys\"<\/span><span>:<\/span> <span>{<\/span><span>}<\/span> <span>}<\/span>\n<\/span><span>ERROR<span>:<\/span>\n<\/span><span> Code<span>:<\/span> Unknown\n<\/span><span> Message<span>:<\/span> Write Metadata to file failed<span>:<\/span> 'SSH' detected the 'fatal' condition 'Failed to open file'<span>:<\/span> No such file or directory\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u067e\u0633 \u0627\u0632 \u0627\u06cc\u0646 \u062e\u0637\u0627\u060c \u062f\u0633\u062a\u06af\u0627\u0647<strong style=\"color: rgb(26, 26, 26)\">\u0628\u0647 \u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0648 \u0628\u062f\u0648\u0646 \u0627\u0637\u0644\u0627\u0639\u060c \u06a9\u0644\u06cc\u062f Ed25519 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0631\u0627<\/strong>\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062a\u0646\u0647\u0627 \u06a9\u0644\u06cc\u062f \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Key) \u062d\u0641\u0638 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631<code>GetPublicKeys<\/code>\u062a\u0623\u06cc\u06cc\u062f \u06a9\u0631\u062f\u0647 \u0648 \u06a9\u0644\u06cc\u062f \u0628\u0627\u0632\u06af\u0631\u062f\u0627\u0646\u062f\u0647 \u0634\u062f\u0647 \u0631\u0627 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code><span>grpcurl <span>..<\/span>. <span>-d<\/span> <span>'{}'<\/span> <span>\"<span>${XR}<\/span>\"<\/span> gnsi.credentialz.v1.Credentialz.GetPublicKeys <span>\\<\/span>\n<\/span><span> <span>|<\/span> jq <span>-r<\/span> <span>'.publicKeys[]|select(.keyType==\"KEY_TYPE_ED25519\").publicKey'<\/span> <span>\\<\/span>\n<\/span><span> <span>|<\/span> base64 <span>-d<\/span> <span>|<\/span> ssh-keygen <span>-lf<\/span> \/dev\/stdin\n<\/span><span><span># fingerprint matches \/tmp\/credz-ext-hostkey.pub<\/span>\n<\/span><span><span># Recover the missing algorithms in one call:<\/span>\n<\/span><span>grpcurl <span>..<\/span>. <span>-d<\/span> @ <span>\"<span>${XR}<\/span>\"<\/span> gnsi.credentialz.v1.Credentialz.RotateHostParameters <span>&lt;&lt;<\/span><span>'EOF'\n<\/span><\/span><span><span>{\"generateKeys\":{\"keyParams\":[\n<\/span><\/span><span><span> \"KEY_GEN_SSH_KEY_TYPE_RSA_2048\",\n<\/span><\/span><span><span> \"KEY_GEN_SSH_KEY_TYPE_ECDSA_P_256\",\n<\/span><\/span><span><span> \"KEY_GEN_SSH_KEY_TYPE_ECDSA_P_521\",\n<\/span><\/span><span><span> \"KEY_GEN_SSH_KEY_TYPE_EDDSA_ED25519\"]}}\n<\/span><\/span><span><span>{\"finalize\":{}}\n<\/span><\/span><span><span>EOF<\/span>\n<\/span><\/code><\/pre>\n<h3 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 \u0686\u0631\u062e\u0634\u06cc (RotateHostParameters): \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc CA<\/h3>\n<p style=\"direction: rtl; text-align: right\">\u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06cc\u06a9 \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc CA \u0628\u0631\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc SSH \u06a9\u0644\u0627\u06cc\u0646\u062a:<\/p>\n<pre><code><span>ssh-keygen <span>-t<\/span> ed25519 <span>-f<\/span> \/tmp\/credz-test-ca <span>-N<\/span> <span>\"\"<\/span> <span>-C<\/span> <span>\"test-ca\"<\/span>\n<\/span><span><span>CA_B64<\/span><span>=<\/span><span><span>$(<\/span>base64 <span>&lt;<\/span> \/tmp\/credz-test-ca.pub <span>|<\/span> <span>tr<\/span> <span>-d<\/span> <span>'\\n'<\/span><span>)<\/span><\/span>\n<\/span><span><span>CREATED_ON<\/span><span>=<\/span><span><span>$(<\/span><span>date<\/span> +%s<span>)<\/span><\/span>\n<\/span><span>grpcurl <span>-plaintext<\/span> <span>\\<\/span>\n<\/span><span> -import-path <span>\"<span>$GNSI_IMPORT<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-proto<\/span> <span>\"<span>$PROTO_CREDZ<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${GRPC_MD<span>[<\/span>@<span>]<\/span>}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-d<\/span> <span>'@'<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${XR}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> gnsi.credentialz.v1.Credentialz.RotateHostParameters <span>&lt;&lt;<\/span><span>EOF\n<\/span><\/span><span><span>{\"sshCaPublicKey\":{\"sshCaPublicKeys\":[{\"publicKey\":\"<span>${CA_B64}<\/span>\",\"keyType\":\"KEY_TYPE_ED25519\"}],\"version\":\"ca-v1\",\"createdOn\":\"<span>${CREATED_ON}<\/span>\"}}\n<\/span><\/span><span><span>{\"finalize\":{}}\n<\/span><\/span><span><span>EOF<\/span>\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u067e\u0627\u0633\u062e \u0631\u0648\u062a\u0631 (Router response)<\/p>\n<pre><code><span><span>{<\/span>\n<\/span><span> <span>\"sshCaPublicKey\"<\/span><span>:<\/span> <span>{<\/span><span>}<\/span>\n<\/span><span><span>}<\/span>\n<\/span><span><span>{<\/span><span>}<\/span>\n<\/span><\/code><\/pre>\n<h3 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">RotateHostParameters: \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a (Authentication)<\/h3>\n<p style=\"direction: rtl; text-align: right\">Restrict which SSH Authentication methods are globally allowed. Available types:<code>\u0646\u0648\u0639 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 (AUTHENTICATION_TYPE_PASSWORD)<\/code>, <code>\u0646\u0648\u0639 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc (AUTHENTICATION_TYPE_PUBKEY)<\/code>, <code>\u0646\u0648\u0639 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u062a\u0639\u0627\u0645\u0644\u06cc \u0635\u0641\u062d\u0647\u200c\u06a9\u0644\u06cc\u062f (AUTHENTICATION_TYPE_KBDINTERACTIVE)<\/code>.<\/p>\n<p style=\"direction: rtl; text-align: right\">\u0627\u062c\u0627\u0632\u0647 \u062f\u0627\u062f\u0646 \u0628\u0647 \u0647\u0631 \u0633\u0647 \u0631\u0648\u0634 (\u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0627\u06cc\u0645\u0646):<\/p>\n<pre><code><span>grpcurl <span>-plaintext<\/span> <span>\\<\/span>\n<\/span><span> -import-path <span>\"<span>$GNSI_IMPORT<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-proto<\/span> <span>\"<span>$PROTO_CREDZ<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${GRPC_MD<span>[<\/span>@<span>]<\/span>}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-d<\/span> <span>'@'<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${XR}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> gnsi.credentialz.v1.Credentialz.RotateHostParameters <span>&lt;&lt;<\/span><span>'EOF'\n<\/span><\/span><span><span>{\"authenticationAllowed\":{\"authenticationTypes\":[\"AUTHENTICATION_TYPE_PASSWORD\",\"AUTHENTICATION_TYPE_PUBKEY\",\"AUTHENTICATION_TYPE_KBDINTERACTIVE\"]}}\n<\/span><\/span><span><span>{\"finalize\":{}}\n<\/span><\/span><span><span>EOF<\/span>\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u067e\u0627\u0633\u062e \u0631\u0648\u062a\u0631 (Router response)<\/p>\n<pre><code><span><span>{<\/span>\n<\/span><span> <span>\"authenticationAllowed\"<\/span><span>:<\/span> <span>{<\/span><span>}<\/span>\n<\/span><span><span>}<\/span>\n<\/span><span><span>{<\/span><span>}<\/span>\n<\/span><\/code><\/pre>\n<blockquote style=\"direction: rtl; text-align: right\">\n<p><strong style=\"color: rgb(26, 26, 26)\">\u0647\u0634\u062f\u0627\u0631:<\/strong>\u0628\u0631\u0627\u06cc \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0628\u0647 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0641\u0642\u0637 \u0628\u0627 \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc (pubkey-only)\u060c \u0645\u0642\u062f\u0627\u0631<code>AUTHENTICATION_TYPE_PUBKEY<\/code>.\u0631\u0627 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u0627 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0648 \u062a\u0639\u0627\u0645\u0644\u06cc \u0635\u0641\u062d\u0647\u200c\u06a9\u0644\u06cc\u062f (keyboard-interactive) \u0631\u0627 \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u067e\u06cc\u0634 \u0627\u0632 \u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc\u060c \u062f\u0633\u062a\u0631\u0633\u06cc SSH \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0632 \u0642\u0641\u0644 \u0634\u062f\u0646 \u0633\u06cc\u0633\u062a\u0645 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0634\u0648\u062f.<\/p>\n<\/blockquote>\n<h3 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 \u0686\u0631\u062e\u0634\u06cc (RotateHostParameters): \u062a\u0646\u0638\u06cc\u0645 \u062f\u0633\u062a\u0648\u0631 \u0627\u0635\u0648\u0644 \u0645\u062c\u0627\u0632 (AuthorizedPrincipalsCommand) (HIBA)<\/h3>\n<p style=\"direction: rtl; text-align: right\">\u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0645\u062c\u0648\u0632\u062f\u0647\u06cc (Authorization) \u0627\u0635\u0644\u06cc \u067e\u0648\u06cc\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0628\u0627\u06cc\u0646\u0631\u06cc HIBA:<\/p>\n<pre><code><span>grpcurl <span>-plaintext<\/span> <span>\\<\/span>\n<\/span><span> -import-path <span>\"<span>$GNSI_IMPORT<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-proto<\/span> <span>\"<span>$PROTO_CREDZ<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${GRPC_MD<span>[<\/span>@<span>]<\/span>}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-d<\/span> <span>'@'<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${XR}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> gnsi.credentialz.v1.Credentialz.RotateHostParameters <span>&lt;&lt;<\/span><span>'EOF'\n<\/span><\/span><span><span>{\"authorizedPrincipalCheck\":{\"tool\":\"TOOL_HIBA_DEFAULT\"}}\n<\/span><\/span><span><span>{\"finalize\":{}}\n<\/span><\/span><span><span>EOF<\/span>\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u067e\u0627\u0633\u062e \u0631\u0648\u062a\u0631 (Router response)<\/p>\n<pre><code><span><span>{<\/span>\n<\/span><span> <span>\"authorizedPrincipalCheck\"<\/span><span>:<\/span> <span>{<\/span><span>}<\/span>\n<\/span><span><span>}<\/span>\n<\/span><span><span>{<\/span><span>}<\/span>\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u0628\u0631\u0627\u06cc \u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646 HIBA \u0648 \u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u0645\u062c\u0648\u0632\u062f\u0647\u06cc (Authorization) \u0627\u06cc\u0633\u062a\u0627\u060c \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<code>tool\":\"TOOL_UNSPECIFIED<\/code>.<\/p>\n<h3 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u062a\u0623\u06cc\u06cc\u062f \u062f\u0631 IOS XR<\/h3>\n<p style=\"direction: rtl; text-align: right\">\u067e\u0633 \u0627\u0632 \u0647\u0631 \u0686\u0631\u062e\u0634 (Rotation)\u060c \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 CLI \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code><span>show ssh\n<\/span><span>show ssh server\n<\/span><span>show crypto key mypubkey ed25519\n<\/span><span>show gnsi state\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u062a\u0623\u06cc\u06cc\u062f \u0627\u0632 \u0637\u0631\u06cc\u0642 gRPC \u2014 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Keys) \u0645\u0646\u0639\u06a9\u0633\u200c\u06a9\u0646\u0646\u062f\u0647 \u0622\u062e\u0631\u06cc\u0646 \u0686\u0631\u062e\u0634 (Rotation) \u0647\u0633\u062a\u0646\u062f:<\/p>\n<pre><code><span>grpcurl <span>-plaintext<\/span> <span>\\<\/span>\n<\/span><span> -import-path <span>\"<span>$GNSI_IMPORT<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-proto<\/span> <span>\"<span>$PROTO_CREDZ<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${GRPC_MD<span>[<\/span>@<span>]<\/span>}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> <span>-d<\/span> <span>'{}'<\/span> <span>\\<\/span>\n<\/span><span> <span>\"<span>${XR}<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> gnsi.credentialz.v1.Credentialz.GetPublicKeys\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u067e\u0627\u0633\u062e \u067e\u0633 \u0627\u0632 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06a9\u0644\u06cc\u062f \u062e\u0627\u0631\u062c\u06cc:<\/p>\n<pre><code><span><span>{<\/span>\n<\/span><span> <span>\"publicKeys\"<\/span><span>:<\/span> <span>[<\/span>\n<\/span><span> <span>{<\/span>\n<\/span><span> <span>\"publicKey\"<\/span><span>:<\/span> <span>\"c3NoLWVkMjU1MTkgQUFBQUMzTnph...\"<\/span><span>,<\/span>\n<\/span><span> <span>\"keyType\"<\/span><span>:<\/span> <span>\"KEY_TYPE_ED25519\"<\/span>\n<\/span><span> <span>}<\/span>\n<\/span><span> <span>]<\/span>\n<\/span><span><span>}<\/span>\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc<code>\u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc (publicKey)<\/code>\u0628\u0631\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f \u0645\u0637\u0627\u0628\u0642\u062a \u0622\u0646 \u0628\u0627 \u0641\u0627\u06cc\u0644 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647:<\/p>\n<pre><code><span><span>echo<\/span> <span>\"c3NoLWVkMjU1MTkgQUFBQUMzTnph...\"<\/span> <span>|<\/span> base64 <span>-d<\/span>\n<\/span><span><span># ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... ext-host@lab<\/span>\n<\/span><\/code><\/pre>\n<h3 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0639\u06cc\u0628\u200c\u06cc\u0627\u0628\u06cc (Debugging) \u0628\u0627 grpcurl<\/h3>\n<p style=\"direction: rtl; text-align: right\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632<code>\u062a\u0648\u0635\u06cc\u0641 \u06a9\u0631\u062f\u0646<\/code>\u0648<code>-msg-template<\/code>\u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u06cc\u0627\u0645:<\/p>\n<pre><code><span>grpcurl -import-path <span>\"<span>$GNSI_IMPORT<\/span>\"<\/span> <span>-proto<\/span> <span>\"<span>$PROTO_CREDZ<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> describe gnsi.credentialz.v1.Credentialz.RotateAccountCredentials\n<\/span><span>grpcurl -import-path <span>\"<span>$GNSI_IMPORT<\/span>\"<\/span> <span>-proto<\/span> <span>\"<span>$PROTO_CREDZ<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> -msg-template describe gnsi.credentialz.v1.RotateAccountCredentialsRequest\n<\/span><span>grpcurl -import-path <span>\"<span>$GNSI_IMPORT<\/span>\"<\/span> <span>-proto<\/span> <span>\"<span>$PROTO_CREDZ<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> -msg-template describe gnsi.credentialz.v1.RotateHostParametersRequest\n<\/span><span>grpcurl -import-path <span>\"<span>$GNSI_IMPORT<\/span>\"<\/span> <span>-proto<\/span> <span>\"<span>$PROTO_CREDZ<\/span>\"<\/span> <span>\\<\/span>\n<\/span><span> -msg-template describe gnsi.credentialz.v1.CanGenerateKeyRequest\n<\/span><\/code><\/pre>\n<hr>\n<h2 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u0645\u0633\u06cc\u0631 \u0646\u06af\u0627\u0634\u062a (Mapping Path) \u067e\u0631\u0648\u062a\u06a9\u0644 SPIFFE<\/h2>\n<p style=\"direction: rtl; text-align: right\">\u06af\u0631\u062f\u0634 \u06a9\u0627\u0631 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a (Authentication) \u0648 \u062a\u0639\u06cc\u06cc\u0646 \u0633\u0637\u062d \u062f\u0633\u062a\u0631\u0633\u06cc (Authorization) \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0634\u0646\u0627\u0633\u0647 SPIFFE \u0627\u0632 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0646\u06af\u0627\u0634\u062a (Mapping file) \u062f\u0631 \u0645\u0633\u06cc\u0631 \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n<pre><code><span>\/misc\/config\/grpc\/gnsi\/credentialz\/spiffe-user-map.json\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u0627\u06af\u0631 \u0641\u0627\u06cc\u0644 \u0645\u0648\u062c\u0648\u062f \u0646\u0628\u0627\u0634\u062f \u06cc\u0627 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0628\u0627\u0634\u062f\u060c \u0646\u06af\u0627\u0634\u062a (Mapping) \u062e\u0627\u0644\u06cc \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f. \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0645\u0648\u062c\u0648\u062f \u0628\u0627\u0634\u062f\u060c \u0634\u0646\u0627\u0633\u0647 \u0647\u0627\u06cc SPIFFE \u0628\u0631\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a gRPC \u0628\u0647 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc \u0634\u0648\u0646\u062f. \u0628\u062e\u0634 <a href=\"https:\/\/www.cisco.com\/c\/en\/us\/td\/docs\/iosxr\/cisco8000\/programmability\/b-programmability-configuration-guide-cisco8000\/m-grpc-authentication.html\" style=\"color: rgb(0, 102, 204)\">\u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0634\u0646\u0627\u0633\u0647 SPIFFE<\/a> \u0631\u0627 \u062f\u0631 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc Cisco \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<hr>\n<h2 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u067e\u0627\u06cc\u0634 (Monitoring) \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 YANG Telemetry<\/h2>\n<p style=\"direction: rtl; text-align: right\">\u0645\u062f\u0644 YANG \u0645\u062f\u0644 OpenConfig<strong style=\"color: rgb(26, 26, 26)\"><code>openconfig-gnsi-credentialz<\/code><\/strong>\u0628\u0647 \u0645\u0646\u0638\u0648\u0631 \u0646\u0645\u0627\u06cc\u0634 \u0645\u062a\u0627\u062f\u06cc\u062a\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647 (Credential) \u0648 \u0634\u0645\u0627\u0631\u0646\u062f\u0647\u200c\u0647\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc (Access Counters) \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<blockquote style=\"direction: rtl; text-align: right\">\n<p><strong style=\"color: rgb(26, 26, 26)\">\u062f\u0631 \u0646\u0633\u062e\u0647 25.3.1:<\/strong><code>\u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc gnmic<\/code>\u062a\u0628\u0644\u06cc\u063a \u0645\u06cc\u200c\u06a9\u0646\u062f<code>openconfig-gnsi-credentialz, 0.6.0<\/code>\u060c \u0627\u0645\u0627<code>\u062f\u0631\u062e\u0648\u0627\u0633\u062a gnmi Get<\/code>\u0628\u0627\u0632\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f<code>NotFound<\/code>\u0628\u0631\u0627\u06cc \u0647\u0631 \u0628\u0631\u06af (leaf) \u0645\u0633\u062a\u0646\u062f \u0634\u062f\u0647 Credentialz (<code>active-host-key-version<\/code>, <code>\u2026\/counters\/access-{accepts,rejects}<\/code>\u060c \u0628\u0631\u0627\u06cc \u0647\u0631 \u06a9\u0627\u0631\u0628\u0631<code>password-version<\/code>\u060c \u0648 \u063a\u06cc\u0631\u0647). \u062a\u0646\u0647\u0627 \u0633\u06cc\u06af\u0646\u0627\u0644 Credentialz \u06a9\u0647 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0627\u0633\u062a\u060c \u0646\u0645\u0627\u06cc \u0634\u0645\u0627\u0631\u0646\u062f\u0647 (counter) \u0628\u0647 \u0627\u0632\u0627\u06cc \u0647\u0631 RPC \u062f\u0631 \u0632\u06cc\u0631<code>openconfig-gnsi-authz:authz-policy-counters<\/code>(\u0631\u062f\u06cc\u0641\u200c\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc<code>gnsi.credentialz.v1.Credentialz\/{CanGenerateKey,GetPublicKeys,RotateAccountCredentials,RotateHostParameters}<\/code>) \u0627\u0633\u062a. \u0628\u0631\u06af\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0628\u0631\u0627\u06cc \u0627\u0631\u062c\u0627\u0639 \u0645\u0633\u062a\u0646\u062f \u0634\u062f\u0647\u200c\u0627\u0646\u062f \u2014 \u062f\u0631 \u0627\u06cc\u0646 \u0646\u0633\u062e\u0647 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u0622\u062a\u06cc \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f.<\/p>\n<\/blockquote>\n<p style=\"direction: rtl; text-align: right\"><strong style=\"color: rgb(26, 26, 26)\">\u0645\u062a\u0627\u062f\u06cc\u062a\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647 \u0633\u0631\u0648\u0631 SSH<\/strong>(\u067e\u0627\u06cc\u0647:<code>\/system\/ssh-server\/state<\/code>):<\/p>\n<table style=\"direction: rtl; text-align: right\" class=\"english-numbers\">\n<thead>\n<tr>\n<th>\u0645\u0633\u06cc\u0631 YANG<\/th>\n<th>\u062a\u0648\u0636\u06cc\u062d\u0627\u062a<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>\/system\/ssh-server\/state\/active-trusted-user-ca-keys-version<\/code><\/td>\n<td>\u0646\u0633\u062e\u0647 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc CA \u0645\u0648\u0631\u062f \u0627\u0639\u062a\u0645\u0627\u062f \u0628\u0631\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u06af\u0648\u0627\u0647\u06cc \u06a9\u0644\u0627\u06cc\u0646\u062a<\/td>\n<\/tr>\n<tr>\n<td><code>\/system\/ssh-server\/state\/active-trusted-user-ca-keys-created-on<\/code><\/td>\n<td>\u0632\u0645\u0627\u0646 \u0646\u0635\u0628 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc CA<\/td>\n<\/tr>\n<tr>\n<td><code>\/system\/ssh-server\/state\/active-host-certificate-version<\/code><\/td>\n<td>\u0646\u0633\u062e\u0647 \u06af\u0648\u0627\u0647\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Certificate)<\/td>\n<\/tr>\n<tr>\n<td><code>\/system\/ssh-server\/state\/active-host-certificate-created-on<\/code><\/td>\n<td>\u0632\u0645\u0627\u0646 \u0646\u0635\u0628 \u06af\u0648\u0627\u0647\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646<\/td>\n<\/tr>\n<tr>\n<td><code>\/system\/ssh-server\/state\/active-host-key-version<\/code><\/td>\n<td>\u0646\u0633\u062e\u0647 \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Public Key)<\/td>\n<\/tr>\n<tr>\n<td><code>\/system\/ssh-server\/state\/active-host-key-created-on<\/code><\/td>\n<td>\u0632\u0645\u0627\u0646 \u0646\u0635\u0628 \u06a9\u0644\u06cc\u062f \u0645\u06cc\u0632\u0628\u0627\u0646<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"direction: rtl; text-align: right\"><strong style=\"color: rgb(26, 26, 26)\">\u0634\u0645\u0627\u0631\u0646\u062f\u0647\u200c\u0647\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0633\u0631\u0648\u0631 SSH<\/strong>(\u067e\u0627\u06cc\u0647:<code>\/system\/ssh-server\/state\/counters<\/code>):<\/p>\n<table style=\"direction: rtl; text-align: right\" class=\"english-numbers\">\n<thead>\n<tr>\n<th>\u0645\u0633\u06cc\u0631 YANG<\/th>\n<th>\u062a\u0648\u0636\u06cc\u062d\u0627\u062a<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>\/system\/ssh-server\/state\/counters\/access-accepts<\/code><\/td>\n<td>\u0645\u062c\u0645\u0648\u0639 \u0627\u062a\u0635\u0627\u0644\u0627\u062a \u0645\u0648\u0641\u0642 SSH<\/td>\n<\/tr>\n<tr>\n<td><code>\/system\/ssh-server\/state\/counters\/access-rejects<\/code><\/td>\n<td>\u0645\u062c\u0645\u0648\u0639 \u0627\u062a\u0635\u0627\u0644\u0627\u062a \u0631\u062f \u0634\u062f\u0647 SSH<\/td>\n<\/tr>\n<tr>\n<td><code>\/system\/ssh-server\/state\/counters\/last-access-accept<\/code><\/td>\n<td>\u0645\u0647\u0631 \u0632\u0645\u0627\u0646\u06cc (Timestamp) \u0622\u062e\u0631\u06cc\u0646 \u0627\u062a\u0635\u0627\u0644 \u0645\u0648\u0641\u0642 SSH<\/td>\n<\/tr>\n<tr>\n<td><code>\/system\/ssh-server\/state\/counters\/last-access-reject<\/code><\/td>\n<td>\u0645\u0647\u0631 \u0632\u0645\u0627\u0646\u06cc (Timestamp) \u0622\u062e\u0631\u06cc\u0646 \u0631\u062f \u0627\u062a\u0635\u0627\u0644 SSH<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"direction: rtl; text-align: right\"><strong style=\"color: rgb(26, 26, 26)\">Per-user Credential metadata<\/strong>\u0644\u0637\u0641\u0627\u064b \u0645\u062a\u0646 \u0648\u0631\u0648\u062f\u06cc \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f \u062a\u0627 \u0637\u0628\u0642 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0648 \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644\u200c\u0647\u0627\u06cc \u0630\u06a9\u0631 \u0634\u062f\u0647\u060c \u062a\u0631\u062c\u0645\u0647 \u0622\u0646 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u0645.<code>\/system\/aaa\/authentication\/users\/user[username=<user>]\/state<\/user><\/code>):<\/p>\n<table style=\"direction: rtl; text-align: right\" class=\"english-numbers\">\n<thead>\n<tr>\n<th>\u0645\u0633\u06cc\u0631 YANG (\u0646\u0633\u0628\u062a \u0628\u0647 \u067e\u0627\u06cc\u0647)<\/th>\n<th>\u0622\u0646\u0686\u0647 \u0628\u06cc\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>...\/authorized-keys-list-version<\/code><\/td>\n<td>\u0646\u0633\u062e\u0647 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062c\u0627\u0632 (Authorized Keys) \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631<\/td>\n<\/tr>\n<tr>\n<td><code>...\/authorized-keys-list-created-on<\/code><\/td>\n<td>\u0632\u0645\u0627\u0646 \u0646\u0635\u0628 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062c\u0627\u0632<\/td>\n<\/tr>\n<tr>\n<td><code>...\/authorized-principals-list-version<\/code><\/td>\n<td>\u0646\u0633\u062e\u0647 \u0627\u0635\u0648\u0644 \u0645\u062c\u0627\u0632 (Authorized Principals) \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631<\/td>\n<\/tr>\n<tr>\n<td><code>...\/authorized-principals-list-created-on<\/code><\/td>\n<td>\u0632\u0645\u0627\u0646 \u0646\u0635\u0628 \u0627\u0635\u0648\u0644 \u0645\u062c\u0627\u0632<\/td>\n<\/tr>\n<tr>\n<td><code>...\/password-version<\/code><\/td>\n<td>\u0646\u0633\u062e\u0647 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 (Password) \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631<\/td>\n<\/tr>\n<tr>\n<td><code>...\/password-created-on<\/code><\/td>\n<td>\u0632\u0645\u0627\u0646 \u062a\u0646\u0638\u06cc\u0645 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"direction: rtl; text-align: right\">\u0627\u0634\u062a\u0631\u0627\u06a9 \u062f\u0631<code>access-rejects<\/code>\u0648<code>last-access-reject<\/code>\u0628\u0631\u0627\u06cc \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u062e\u0637\u0627\u0647\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a SSH \u067e\u0633 \u0627\u0632 \u0686\u0631\u062e\u0634 \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647 (Credential Rotation). \u0627\u0641\u0632\u0627\u06cc\u0634 \u0646\u0627\u06af\u0647\u0627\u0646\u06cc \u062f\u0631 \u0645\u0648\u0627\u0631\u062f \u0631\u062f \u0634\u062f\u0647 (rejects) \u067e\u0633 \u0627\u0632 RotateHostParameters \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06a9\u0644\u06cc\u062f \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Key) \u06cc\u0627 \u06a9\u0644\u06cc\u062f \u0645\u0631\u062c\u0639 \u06af\u0648\u0627\u0647\u06cc (CA Key) \u062c\u062f\u06cc\u062f \u0645\u0637\u0627\u0628\u0642\u062a \u0646\u062f\u0627\u0631\u062f \u2014 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632<code>GetPublicKeys<\/code>.<\/p>\n<p style=\"direction: rtl; text-align: right\">\u0639\u0628\u0627\u0631\u062a\u200c\u0647\u0627\u06cc<code>*-version<\/code>\u0648<code>*-created-on<\/code>\u062f\u0631 \u0628\u0631\u06af\u0647\u200c\u0647\u0627 (leaves) \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u0627\u0646 \u0631\u0634\u062a\u0647\u200c\u0647\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647 \u062f\u0631 \u0637\u0648\u0644 Rotate RPCs \u0631\u0627 \u0645\u0646\u0639\u06a9\u0633 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062e\u0637\u200c\u0644\u0648\u0644\u0647\u200c\u0647\u0627\u06cc \u062a\u0644\u0647\u200c\u0645\u062a\u0631\u06cc (Telemetry pipelines) \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0644\u06af\u0648\u0647\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc SSH \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc (Credential deployments) \u062e\u0627\u0635 \u0645\u0631\u062a\u0628\u0637 \u0633\u0627\u0632\u0646\u062f.<\/p>\n<blockquote style=\"direction: rtl; text-align: right\">\n<p><strong style=\"color: rgb(26, 26, 26)\">Note:<\/strong>When Credentialz is enabled, the standard YANG leaves for SSH keys and passwords under<code>\/system\/aaa\/authentication\/users\/user\/config\/<\/code>\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u062a\u0644\u0642\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. Credentialz \u0645\u0627\u0644\u06a9 \u0622\u0646 \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 (Credentials) \u0627\u0633\u062a.<\/p>\n<\/blockquote>\n<h3 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u0628\u0631\u0631\u0633\u06cc \u0633\u0631\u06cc\u0639 \u062a\u0644\u0647\u200c\u0645\u062a\u0631\u06cc (Telemetry) \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 gnmic<\/h3>\n<p style=\"direction: rtl; text-align: right\">\u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062f\u0633\u062a\u06af\u0627\u0647 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0631\u0627 \u062a\u0628\u0644\u06cc\u063a (Advertise) \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0628\u0631\u0627\u06cc \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0645\u0633\u062a\u0646\u062f \u0634\u062f\u0647 \u0686\u0647 \u067e\u0627\u0633\u062e\u06cc \u0628\u0627\u0632\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f:<\/p>\n<pre><code><span><span># 1) What model + revision does the device claim to support?<\/span>\n<\/span><span>gnmic <span>-a<\/span> <span>\"<span>${XR}<\/span>\"<\/span> <span>--insecure<\/span> <span>-u<\/span> <span>\"<span>${XR_USER}<\/span>\"<\/span> <span>-p<\/span> <span>\"<span>${XR_PASS}<\/span>\"<\/span> capabilities <span>\\<\/span>\n<\/span><span> <span>|<\/span> <span>grep<\/span> <span>-i<\/span> credentialz\n<\/span><span><span># openconfig-gnsi-credentialz, 0.6.0 (gnmi)<\/span>\n<\/span><span><span># cisco-xr-openconfig-gnsi-credentialz-deviations, 2024-08-29<\/span>\n<\/span><span><span># 2) Try the documented leaves \u2014 these will all be NotFound on 25.3.1:<\/span>\n<\/span><span>gnmic <span>-a<\/span> <span>\"<span>${XR}<\/span>\"<\/span> <span>--insecure<\/span> <span>-u<\/span> <span>\"<span>${XR_USER}<\/span>\"<\/span> <span>-p<\/span> <span>\"<span>${XR_PASS}<\/span>\"<\/span> get <span>\\<\/span>\n<\/span><span> <span>--path<\/span> <span>\"\/system\/ssh-server\/state\/active-host-key-version\"<\/span> <span>\\<\/span>\n<\/span><span> <span>--path<\/span> <span>\"\/system\/ssh-server\/state\/counters\/access-rejects\"<\/span> <span>||<\/span> <span>true<\/span>\n<\/span><span><span># 3) Working fallback \u2014 gRPC-server RPC counters via openconfig-gnsi-authz:<\/span>\n<\/span><span>gnmic <span>-a<\/span> <span>\"<span>${XR}<\/span>\"<\/span> <span>--insecure<\/span> <span>-u<\/span> <span>\"<span>${XR_USER}<\/span>\"<\/span> <span>-p<\/span> <span>\"<span>${XR_PASS}<\/span>\"<\/span> get <span>\\<\/span>\n<\/span><span> <span>--path<\/span> <span>\"\/system\/grpc-servers\/grpc-server\/network-instance\/state\/authz-policy-counters\/rpcs\/rpc[name=\/gnsi.credentialz.v1.Credentialz\/RotateHostParameters]\/state\"<\/span>\n<\/span><\/code><\/pre>\n<p style=\"direction: rtl; text-align: right\">\u062a\u0645\u0627\u0633 \u0633\u0648\u0645\u060c \u0633\u06cc\u06af\u0646\u0627\u0644 \u0639\u0645\u0644\u06cc \u0628\u0631\u0627\u06cc \u067e\u0631\u0633\u0634 \u00ab\u0622\u06cc\u0627 \u0627\u0645\u0631\u0648\u0632 \u06a9\u0633\u06cc \u0628\u0647 Credentialz \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0627\u0633\u062a\u061f\u00bb \u0645\u062d\u0633\u0648\u0628 \u0645\u06cc\u200c\u0634\u0648\u062f\u061b \u062f\u0648 \u062a\u0645\u0627\u0633 \u0627\u0648\u0644 \u062a\u0627 \u0632\u0645\u0627\u0646 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc YANG\u060c \u0635\u0631\u0641\u0627\u064b \u062c\u0627\u06cc\u200c\u0646\u06af\u0647\u062f\u0627\u0631 (Placeholder) \u0647\u0633\u062a\u0646\u062f.<\/p>\n<hr>\n<h2 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u0646\u06a9\u0627\u062a\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u062a\u0648\u062c\u0647 \u06a9\u0631\u062f<\/h2>\n<ul style=\"direction: rtl; text-align: right\">\n<li><strong style=\"color: rgb(26, 26, 26)\">\u0647\u0631 \u0628\u0627\u0631 \u0641\u0642\u0637 \u06cc\u06a9 RPC.<\/strong>\u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc\u200c\u0647\u0627\u06cc \u0647\u0645\u067e\u0648\u0634\u0627\u0646 RotateAccountCredentials \u06cc\u0627 RotateHostParameters \u0631\u062f \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u0639\u0645\u0644\u06cc\u0627\u062a \u0631\u0627 \u062f\u0631 \u0647\u0631 \u062f\u0648 RPC \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062a\u0648\u0627\u0644\u06cc (Serialize) \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f.<\/li>\n<li><strong style=\"color: rgb(26, 26, 26)\">\u0642\u0628\u0644 \u0627\u0632 \u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc (Finalize)\u060c \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u06a9\u0646\u06cc\u062f.<\/strong>\u0647\u0645\u06cc\u0634\u0647 \u0642\u0628\u0644 \u0627\u0632 \u0627\u0631\u0633\u0627\u0644 FinalizeRequest\u060c \u0627\u062a\u0635\u0627\u0644 SSH (\u06cc\u0627 gRPC \u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631) \u0631\u0627 \u0628\u0627 \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc (Credentials) \u062c\u062f\u06cc\u062f \u062f\u0631 \u06cc\u06a9 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062f\u0648\u0645 \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f. \u0627\u06af\u0631 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0628\u0627 \u0634\u06a9\u0633\u062a \u0645\u0648\u0627\u062c\u0647 \u0634\u062f\u060c \u0627\u0633\u062a\u0631\u06cc\u0645 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u062d\u0627\u0644\u062a \u0642\u0628\u0644 (Rollback) \u0644\u063a\u0648 \u06a9\u0646\u06cc\u062f.<\/li>\n<li><strong style=\"color: rgb(26, 26, 26)\">\u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062c\u0627\u0632 (Authorized Keys) \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u060c \u0646\u0647 \u0627\u062f\u063a\u0627\u0645.<\/strong>\u062f\u0631\u062e\u0648\u0627\u0633\u062a AuthorizedKeysRequest \u06a9\u0644 \u0644\u06cc\u0633\u062a \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062c\u0627\u0632 \u0628\u0631\u0627\u06cc \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062a\u0645\u0627\u0645 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0645\u0639\u062a\u0628\u0631 \u0628\u0627\u0642\u06cc \u0628\u0645\u0627\u0646\u0646\u062f \u0631\u0627 \u0644\u062d\u0627\u0638 \u06a9\u0646\u06cc\u062f. \u0627\u0631\u0633\u0627\u0644 \u06cc\u06a9 \u0644\u06cc\u0633\u062a \u062e\u0627\u0644\u06cc\u060c \u0631\u0648\u0634 \u0645\u0633\u062a\u0646\u062f \u0628\u0631\u0627\u06cc \u00ab\u062d\u0630\u0641\u00bb \u0627\u0633\u062a.<\/li>\n<li><strong style=\"color: rgb(26, 26, 26)\">\u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a (Authentication methods)<\/strong>\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0627\u0639\u062b \u0642\u0641\u0644 \u0634\u062f\u0646 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646\u06cc \u0634\u0648\u062f \u06a9\u0647 \u0628\u0647 \u0631\u0648\u0634 \u063a\u06cc\u0631\u0641\u0639\u0627\u0644\u200c\u0634\u062f\u0647 \u0645\u062a\u06a9\u06cc \u0647\u0633\u062a\u0646\u062f. \u0647\u0645\u06cc\u0634\u0647 \u062d\u062f\u0627\u0642\u0644 \u06cc\u06a9 \u0631\u0648\u0634 \u0641\u0639\u0627\u0644 \u0631\u0627 \u062d\u0641\u0638 \u06a9\u0646\u06cc\u062f.<\/li>\n<li><strong style=\"color: rgb(26, 26, 26)\">\u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 HIBA.<\/strong>\u062a\u0646\u0638\u06cc\u0645<code>TOOL_HIBA_DEFAULT<\/code>\u062f\u0631 AuthorizedPrincipalCheckRequest\u060c \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a (Authorization) \u067e\u0648\u06cc\u0627\u06cc \u0627\u0635\u0644\u06cc \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0628\u0627\u06cc\u0646\u0631\u06cc HIBA \u0641\u0639\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646 \u0622\u0646 (<code>TOOL_UNSPECIFIED<\/code>) \u0628\u0647 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0627\u06cc\u0633\u062a\u0627 \u0628\u0627\u0632\u0645\u06cc\u200c\u06af\u0631\u062f\u062f.<\/li>\n<li><strong style=\"color: rgb(26, 26, 26)\"><code>PasswordRequest<\/code>\u062f\u0631 \u0646\u0633\u062e\u0647 25.3.1 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/strong>\u0627\u06cc\u0645\u06cc\u062c\u200c\u0647\u0627\u06cc \u0642\u0628\u0644\u06cc \u0645\u0642\u062f\u0627\u0631<code>Unimplemented<\/code>\u0631\u0627 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f\u0646\u062f\u061b \u0628\u06cc\u0644\u062f \u0632\u0646\u062f\u0647\u200c\u0627\u06cc \u06a9\u0647 \u062a\u0633\u062a \u06a9\u0631\u062f\u06cc\u0645\u060c \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0631\u0627 \u0645\u062c\u062f\u062f\u0627\u064b \u0645\u062a\u0635\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062c\u062f\u06cc\u062f \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0628\u0631\u0627\u06cc gRPC AAA \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0633\u062a. \u0647\u0645\u06cc\u0634\u0647 \u0639\u0645\u0644\u06cc\u0627\u062a \u062a\u063a\u06cc\u06cc\u0631 \u0631\u0645\u0632 \u0631\u0627 \u0628\u0627 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u063a\u06cc\u0631-\u0627\u062f\u0645\u06cc\u0646 (\u0645\u062b\u0644\u0627\u064b<code>mike<\/code>) \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f\u060c \u0646\u0647 \u0628\u0627 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06a9\u0647 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 gRPC rotate-authority \u0628\u0627 \u0622\u0646 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0634\u062f\u0647\u200c\u0627\u06cc\u062f.<\/li>\n<li><strong style=\"color: rgb(26, 26, 26)\"><code>GenerateKeys<\/code>\u062f\u0631 \u062a\u0645\u0627\u0645 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u200c\u0647\u0627 \u0645\u062e\u0631\u0628 \u0627\u0633\u062a.<\/strong>\u062d\u062a\u06cc \u06cc\u06a9<code>keyParams<\/code>\u062a\u06a9-\u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u06cc\u060c \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc RSA\u060c ECDSA-P-256\/P-384\/P-521\u060c DSA \u0648 Ed25519 \u0631\u0627 \u067e\u0627\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f. DSA \u0648 ECDSA-P-384 \u0627\u0632 \u0637\u0631\u06cc\u0642 gRPC<strong style=\"color: rgb(26, 26, 26)\">\u063a\u06cc\u0631\u0642\u0627\u0628\u0644 \u0628\u0627\u0632\u06af\u0634\u062a<\/strong>\u0647\u0633\u062a\u0646\u062f (\u062f\u0633\u062a\u0648\u0631<code>CanGenerateKey<\/code>\u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0631 \u062f\u0648 \u0631\u0627 \u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f). \u0647\u0645\u06cc\u0634\u0647 \u062a\u0645\u0627\u0645 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u062d\u0641\u0638 \u06a9\u0646\u06cc\u062f \u0631\u0627 \u062f\u0631 \u0647\u0645\u0627\u0646<code>keyParams<\/code>\u0644\u06cc\u0633\u062a <a href=\"https:\/\/xrdocs.io\/programmability\/blogs\/gnsi-credentialz-ssh-credential-rotation-on-cisco-ios-xr#generatekeys-is-destructive\" style=\"color: rgb(0, 102, 204)\">\u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f. \u0628\u0628\u06cc\u0646\u06cc\u062f<\/a>.<\/li>\n<li><strong style=\"color: rgb(26, 26, 26)\"><code>GenerateKeys \u0645\u062e\u0631\u0628 \u0627\u0633\u062a<\/code>ServerKeysRequest<\/strong>\u0628\u0627\u06af \u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc (25.3.1).<code>\u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc \u0645\u0642\u062f\u0627\u0631<\/code>Code: Unknown<code>\u0631\u0627 \u0628\u0627 \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u062f\u0627\u062e\u0644\u06cc<\/code>Failed to open file<strong style=\"color: rgb(26, 26, 26)\">\u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f\u060c<\/strong>\u0627\u0645\u0627 \u0641\u0631\u0648\u0634\u06af\u0627\u0647 \u06a9\u0644\u06cc\u062f \u0645\u06cc\u0632\u0628\u0627\u0646 (host-key store) \u0647\u0645\u0686\u0646\u0627\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f<code>\u2014 \u06a9\u0644\u06cc\u062f \u062e\u0635\u0648\u0635\u06cc \u0622\u067e\u0644\u0648\u062f \u0634\u062f\u0647 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u062a\u0645\u0627\u0645 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 \u0645\u0648\u062c\u0648\u062f \u0645\u06cc\u200c\u0634\u0648\u062f. \u06cc\u06a9 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc<\/code>generateKeys<\/li>\n<li><strong style=\"color: rgb(26, 26, 26)\"><code>CanGenerateKey<\/code>\u0686\u0646\u062f-\u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u06cc \u0622\u0645\u0627\u062f\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/strong><code>\u062f\u0648 \u0645\u0642\u062f\u0627\u0631\u06cc \u06a9\u0647 \u062f\u0631 proto enum \u0647\u0633\u062a\u0646\u062f \u0631\u0627 \u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/code>KEY_GEN_SSH_KEY_TYPE_RSA_3072<code>\u0648<\/code>KEY_GEN_SSH_KEY_TYPE_ECDSA_P_384<code>\u0645\u0642\u062f\u0627\u0631<\/code>InvalidArgument: &#8220;Can Generate Key:Invaid KeyGen input<\/li>\n<li><strong style=\"color: rgb(26, 26, 26)\">\u0631\u0627 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u0646\u062f (\u063a\u0644\u0637 \u0627\u0645\u0644\u0627\u06cc\u06cc \u0631\u0648\u06cc \u062f\u0633\u062a\u06af\u0627\u0647). \u0627\u0632 RSA-2048\/4096\u060c ECDSA-P-256\/P-521 \u0648 Ed25519 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/strong><code>\u0645\u0648\u062c\u0648\u062f\u06cc \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u06a9\u0644\u06cc\u062f \u0645\u06cc\u0632\u0628\u0627\u0646 \u0634\u0627\u0645\u0644 DSA \u0648 ECDSA-P-384 \u0627\u0633\u062a.<\/code>GetPublicKeys<code>\u0631\u0648\u06cc \u06cc\u06a9 NCS-540 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636\u060c 6 \u06a9\u0644\u06cc\u062f \u0631\u0627 \u0644\u06cc\u0633\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u062f\u0648 \u0645\u0648\u0631\u062f \u0627\u0632 \u0622\u0646\u200c\u0647\u0627 (<\/code>, <code>ssh-dss<\/code>ECDSA-P-384<code>) \u0628\u0627 \u0641\u06cc\u0644\u062f<\/code>keyType<code>\u2014 \u06a9\u0644\u06cc\u062f \u062e\u0635\u0648\u0635\u06cc \u0622\u067e\u0644\u0648\u062f \u0634\u062f\u0647 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u062a\u0645\u0627\u0645 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 \u0645\u0648\u062c\u0648\u062f \u0645\u06cc\u200c\u0634\u0648\u062f. \u06cc\u06a9 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc<\/code>\u062d\u0630\u0641\u200c\u0634\u062f\u0647 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0646\u062f. DSA \u0628\u0647\u200c\u0648\u06cc\u0698\u0647 \u062a\u0648\u0633\u0637 OpenSSH \u0645\u0646\u0633\u0648\u062e \u0634\u062f\u0647 \u0627\u0633\u062a\u061b \u0622\u0646 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u06cc\u06a9 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u062a\u0645\u06cc\u0632 \u0686\u0646\u062f-\u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u06cc \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f.<\/li>\n<li><strong style=\"color: rgb(26, 26, 26)\">\u0644\u063a\u0648 \u062f\u0631 \u0645\u06cc\u0627\u0646\u0647 \u0627\u0633\u062a\u0631\u06cc\u0645 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0627\u0645\u0627 \u0646\u0627\u0645 \u0632\u06cc\u0631\u0633\u06cc\u0633\u062a\u0645 \u0631\u0627 \u0646\u0634\u062a \u0645\u06cc\u200c\u062f\u0647\u062f.<\/strong>\u0628\u0633\u062a\u0646 \u0627\u0633\u062a\u0631\u06cc\u0645 \u062f\u0648\u0637\u0631\u0641\u0647 (bidi stream) \u0642\u0628\u0644 \u0627\u0632 \u0627\u0631\u0633\u0627\u0644<code>finalize<\/code>\u0646\u0627\u0645\u0632\u062f \u0631\u0627 \u0644\u063a\u0648 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0627\u0645\u0627 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u0642\u062f\u0627\u0631<code>Code: Canceled, Message: \"Credz stream failure: EOF<\/code>\u0631\u0627 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f. \u0627\u06cc\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0631\u0641\u062a\u0627\u0631 \u0645\u0648\u0631\u062f \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f\u061b \u06cc\u06a9 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0628\u0639\u062f\u06cc \u0628\u0627 \u0647\u0645\u0627\u0646 \u0645\u062d\u0645\u0648\u0644\u0647 (payload) +<code>finalize<\/code>\u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u0645\u0648\u0641\u0642 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li><strong style=\"color: rgb(26, 26, 26)\">\u062a\u0644\u0647\u200c\u0645\u062a\u0631\u06cc YANG \u062a\u0628\u0644\u06cc\u063a \u0634\u062f\u0647 \u0627\u0645\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0646\u0634\u062f\u0647 \u0627\u0633\u062a (25.3.1).<\/strong>\u062a\u0645\u0627\u0645 leaf\u0647\u0627\u06cc \u0645\u0633\u062a\u0646\u062f Credentialz \u0645\u0642\u062f\u0627\u0631<code>NotFound<\/code>\u0631\u0627 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u0646\u062f. \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc YANG \u0627\u0631\u0627\u0626\u0647 \u0634\u0648\u062f\u060c \u0627\u0632<code>openconfig-gnsi-authz:authz-policy-counters<\/code>\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u062f\u0631 \u0633\u0637\u062d RPC \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u062e\u0637\u0627\u0647\u0627\u06cc \u0644\u0627\u06cc\u0647 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 (<code>InvalidArgument<\/code>, <code>Unknown<\/code>) \u0628\u0627\u0639\u062b \u0627\u0641\u0632\u0627\u06cc\u0634<strong style=\"color: rgb(26, 26, 26)\">access-rejects<\/strong>\u062f\u0631 \u0622\u0646 \u0634\u0645\u0627\u0631\u0646\u062f\u0647\u200c\u0647\u0627<code>\u0646\u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/code>Certz \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 Credentialz.<\/li>\n<li><strong style=\"color: rgb(26, 26, 26)\">Certz<\/strong><a href=\"https:\/\/xrdocs.io\/programmability\/blogs\/gnsi-certz-tls-certificate-lifecycle-on-cisco-ios-xr\" style=\"color: rgb(0, 102, 204)\">\u0645\u062f\u06cc\u0631\u06cc\u062a gRPC TLS (\u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u060c \u0628\u0633\u062a\u0647\u200c\u0647\u0627\u06cc \u0627\u0639\u062a\u0645\u0627\u062f\u060c CRL\u0647\u0627 \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u0631 gRPC) \u0631\u0627 \u0628\u0631 \u0639\u0647\u062f\u0647 \u062f\u0627\u0631\u062f. Credentialz \u0645\u062f\u06cc\u0631\u06cc\u062a SSH (\u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646\u060c \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u060c \u0631\u0645\u0632\u0647\u0627\u06cc \u0639\u0628\u0648\u0631 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u062a\u0639\u0627\u0645\u0644\u06cc) \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0627\u06cc\u0646\u200c\u0647\u0627 \u0633\u0637\u0648\u062d \u062c\u062f\u0627\u06af\u0627\u0646\u0647\u200c\u0627\u06cc \u0647\u0633\u062a\u0646\u062f.<\/a> \u0645\u062f\u06cc\u0631\u06cc\u062a gRPC TLS (\u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u060c \u0628\u0633\u062a\u0647\u200c\u0647\u0627\u06cc \u0627\u0639\u062a\u0645\u0627\u062f (Trust Bundles) \u0648 CRL\u0647\u0627 \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u0631 gRPC). \u0628\u062e\u0634 Credentialz \u0645\u062f\u06cc\u0631\u06cc\u062a SSH (\u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646\u060c \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0648 \u0631\u0645\u0632\u0647\u0627\u06cc \u0639\u0628\u0648\u0631 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u062a\u0639\u0627\u0645\u0644\u06cc) \u0631\u0627 \u0628\u0631 \u0639\u0647\u062f\u0647 \u062f\u0627\u0631\u062f. \u0627\u06cc\u0646 \u062f\u0648\u060c \u0633\u0637\u0648\u062d (Planes) \u0645\u062c\u0632\u0627\u06cc\u06cc \u0647\u0633\u062a\u0646\u062f.<\/li>\n<\/ul>\n<h2 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u0646\u062a\u06cc\u062c\u0647\u200c\u06af\u06cc\u0631\u06cc<\/h2>\n<p style=\"direction: rtl; text-align: right\">Credentialz closes the loop between programmatic gRPC Management and interactive SSH access. Keys, Passwords, and Host parameters rotate through a standard gRPC API with built-in Rollback \u2014 no file edits, no reloads, no vendor-specific CLIs. Together with <a href=\"https:\/\/xrdocs.io\/programmability\/blogs\/gnsi-certz-tls-certificate-lifecycle-on-cisco-ios-xr\" style=\"color: rgb(0, 102, 204)\">\u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627<\/a> \u0628\u0631\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a TLS\u060c \u0642\u0627\u0628\u0644\u06cc\u062a Credentialz \u0647\u0631 \u062f\u0648 \u0633\u0637\u062d \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a (Authentication planes) \u0631\u0627 \u067e\u0648\u0634\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0627\u0641\u0632\u0648\u062f\u0646 <a href=\"https:\/\/xrdocs.io\/programmability\/blogs\/grpc-authorization-with-authz\" style=\"color: rgb(0, 102, 204)\">\u0645\u062c\u0648\u0632 (Authz)<\/a> \u0628\u0631\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u062f\u0631 \u0633\u0637\u062d \u0633\u0631\u0648\u06cc\u0633 (Service-level Authorization)\u060c<a href=\"https:\/\/xrdocs.io\/programmability\/blogs\/securing-gnmi-with-pathz\" style=\"color: rgb(0, 102, 204)\">\u0645\u0633\u06cc\u0631\u0647\u0627<\/a> \u0628\u0631\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u062f\u0631 \u0633\u0637\u062d \u0645\u0633\u06cc\u0631 (Path-level Authorization)\u060c \u0648 <a href=\"https:\/\/xrdocs.io\/programmability\/blogs\/gnsi-acctz-management-plane-accounting-on-cisco-ios-xr\" style=\"color: rgb(0, 102, 204)\">\u062d\u0633\u0627\u0628\u200c\u0647\u0627<\/a> \u0628\u0631\u0627\u06cc \u062a\u06a9\u0645\u06cc\u0644 \u0686\u0631\u062e\u0647 \u062d\u06cc\u0627\u062a \u0627\u0645\u0646\u06cc\u062a\u06cc (Security Lifecycle) gNSI \u062f\u0631 \u0633\u06cc\u0633\u062a\u0645\u200c\u0639\u0627\u0645\u0644 IOS XR\u060c \u0628\u062e\u0634 Accounting \u062a\u06a9\u0645\u06cc\u0644\u200c\u06a9\u0646\u0646\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<ul style=\"direction: rtl; text-align: right\">\n<li>Credentialz \u0686\u0631\u062e\u0647\u200c\u0647\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 (Credentials) \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f<strong style=\"color: rgb(26, 26, 26)\">\u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc SSH<\/strong>\u2014 \u0631\u0645\u0632\u0647\u0627\u06cc \u0639\u0628\u0648\u0631 (Passwords)\u060c \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062c\u0627\u0632 (Authorized Keys)\u060c \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Keys)\u060c \u06af\u0648\u0627\u0647\u06cc\u0646\u0627\u0645\u0647\u200c\u0647\u0627 (Certificates)\u060c \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u0631\u062c\u0639 \u0635\u062f\u0648\u0631 \u06af\u0648\u0627\u0647\u06cc (CA Keys) \u0648 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u200c\u0647\u0627\u06cc \u0631\u0648\u0634 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u2014 \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0645\u062c\u062f\u062f (Reload).<\/li>\n<li>\u062f\u0648 RPC \u062c\u0631\u06cc\u0627\u0646\u06cc (Streaming):<strong style=\"color: rgb(26, 26, 26)\">RotateAccountCredentials<\/strong>(\u0628\u0647 \u0627\u0632\u0627\u06cc \u0647\u0631 \u06a9\u0627\u0631\u0628\u0631) \u0648<strong style=\"color: rgb(26, 26, 26)\">RotateHostParameters<\/strong>(\u0628\u0647 \u0627\u0632\u0627\u06cc \u0647\u0631 \u0645\u06cc\u0632\u0628\u0627\u0646). \u0647\u0631 \u062f\u0648 \u0627\u0632 \u0647\u0645\u0627\u0646 \u0645\u062f\u0644 \u062a\u0631\u0627\u06a9\u0646\u0634 \u0645\u0631\u062d\u0644\u0647\u200c\u0628\u0646\u062f\u06cc-\u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc-\u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc (stage-validate-finalize) \u0645\u0634\u0627\u0628\u0647 Certz \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/li>\n<li>\u062f\u0648 RPC \u062a\u06a9\u200c\u0645\u0631\u062d\u0644\u0647\u200c\u0627\u06cc (Unary):<strong style=\"color: rgb(26, 26, 26)\">CanGenerateKey<\/strong>(\u067e\u06cc\u0634\u200c\u0628\u0631\u0631\u0633\u06cc) \u0648<strong style=\"color: rgb(26, 26, 26)\">GetPublicKeys<\/strong>(\u0628\u0627\u0632\u0631\u0633\u06cc \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 \u0641\u0639\u0644\u06cc).<\/li>\n<li>\u0641\u0642\u0637<strong style=\"color: rgb(26, 26, 26)\">\u06cc\u06a9<\/strong>Credentialz RPC \u062f\u0631 \u0647\u0631 \u0644\u062d\u0638\u0647 \u0645\u062c\u0627\u0632 \u0627\u0633\u062a. \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc\u200c\u0647\u0627\u06cc \u0647\u0645\u067e\u0648\u0634\u0627\u0646 \u0628\u0627 \u0634\u06a9\u0633\u062a \u0645\u0648\u0627\u062c\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/li>\n<li><strong style=\"color: rgb(26, 26, 26)\">\u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062c\u0627\u0632 (Authorized Keys) \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0627\u0645\u0644<\/strong>\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u2014 \u062a\u0645\u0627\u0645 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u0639\u062a\u0628\u0631 \u0631\u0627 \u062f\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u06af\u0646\u062c\u0627\u0646\u06cc\u062f.<\/li>\n<li><strong style=\"color: rgb(26, 26, 26)\">\u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 (Host-key rotates) \u0645\u062e\u0631\u0628 \u0627\u0633\u062a.<\/strong>\u0647\u0631 \u062f\u0648 \u062f\u0633\u062a\u0648\u0631<code>generateKeys<\/code>(\u062a\u06a9\u200c\u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u06cc) \u0648<code>serverKeys<\/code>(\u06a9\u0647 \u062f\u0631 \u0646\u0633\u062e\u0647 25.3.1 \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc \u0628\u0627 \u062e\u0637\u0627 \u0645\u0648\u0627\u062c\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f) \u0633\u0627\u06cc\u0631 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u200c\u0647\u0627 \u0631\u0627 \u067e\u0627\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u0647\u0645\u06cc\u0634\u0647 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 \u0631\u0627 \u0628\u0627 \u06cc\u06a9 \u062f\u0633\u062a\u0648\u0631 \u0686\u0646\u062f-\u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u06cc (multi-algo) \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f<code>generateKeys<\/code>\u06a9\u0647 \u0634\u0627\u0645\u0644 \u062a\u0645\u0627\u0645 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u200c\u0647\u0627\u06cc\u06cc \u0628\u0627\u0634\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u062d\u0641\u0638 \u06a9\u0646\u06cc\u062f.<\/li>\n<li><strong style=\"color: rgb(26, 26, 26)\"><code>PasswordRequest<\/code>\u062f\u0631 \u0646\u0633\u062e\u0647 25.3.1 NCS-540 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f<\/strong>\u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062c\u062f\u06cc\u062f \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u062a\u0648\u0633\u0637 gRPC AAA \u067e\u0630\u06cc\u0631\u0641\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u2014 \u0627\u0645\u0627 \u0647\u0645\u06cc\u0634\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u063a\u06cc\u0631-\u0645\u062f\u06cc\u0631 (non-admin) \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f\u060c \u0646\u0647 \u0645\u0631\u062c\u0639 \u062a\u063a\u06cc\u06cc\u0631 gRPC (gRPC rotate-authority).<\/li>\n<li><strong style=\"color: rgb(26, 26, 26)\"><code>openconfig-gnsi-credentialz<\/code>\u062a\u0644\u0647\u200c\u0645\u062a\u0631\u06cc YANG \u062a\u0628\u0644\u06cc\u063a \u0645\u06cc\u200c\u0634\u0648\u062f \u0627\u0645\u0627 \u062f\u0631 \u0646\u0633\u062e\u0647 25.3.1 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0646\u0634\u062f\u0647 \u0627\u0633\u062a. \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0627\u0632<\/strong>openconfig-gnsi-authz:authz-policy-counters<code>\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647\u200c\u067e\u0630\u06cc\u0631\u06cc (Visibility) \u062f\u0631 \u0633\u0637\u062d RPC \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/code>Certz<\/li>\n<li><a href=\"https:\/\/xrdocs.io\/programmability\/blogs\/gnsi-certz-tls-certificate-lifecycle-on-cisco-ios-xr\" style=\"color: rgb(0, 102, 204)\">= gRPC TLS. Credentialz = SSH. \u0633\u0637\u0648\u062d \u0645\u062a\u0641\u0627\u0648\u062a\u060c \u0627\u0644\u06af\u0648\u06cc \u062a\u0631\u0627\u06a9\u0646\u0634 \u06cc\u06a9\u0633\u0627\u0646.<\/a> gRPC TLS. Credentialz = SSH. \u0635\u0641\u062d\u0627\u062a (Planes) \u0645\u062a\u0641\u0627\u0648\u062a\u060c \u0627\u0644\u06af\u0648\u06cc \u062a\u0631\u0627\u06a9\u0646\u0634 (Transaction pattern) \u06cc\u06a9\u0633\u0627\u0646.<\/li>\n<\/ul>\n<p style=\"direction: rtl; text-align: right\"><strong style=\"color: rgb(26, 26, 26)\">\u06af\u0627\u0645 \u0628\u0639\u062f\u06cc:<\/strong>\u0628\u0627 \u062a\u06a9\u0645\u06cc\u0644 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a (Authentication) (\u06af\u0648\u0627\u0647\u06cc\u0646\u0627\u0645\u0647\u200c\u0647\u0627 + \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627)\u060c \u0628\u0647 \u0633\u0631\u0627\u063a \u0645\u062c\u0648\u0632\u062f\u0647\u06cc (Authorization) \u0628\u0627 <a href=\"https:\/\/xrdocs.io\/programmability\/blogs\/grpc-authorization-with-authz\" style=\"color: rgb(0, 102, 204)\">Authz<\/a> \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0633\u0637\u062d \u0633\u0631\u0648\u06cc\u0633 gRPC \u0628\u0631\u0648\u06cc\u062f.<\/p>\n<hr>\n<h2 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u0628\u0627\u0632\u06af\u0631\u062f\u0627\u0646\u06cc \/ \u0644\u063a\u0648 (Undo)<\/h2>\n<table style=\"direction: rtl; text-align: right\" class=\"english-numbers\">\n<thead>\n<tr>\n<th>\u0648\u0636\u0639\u06cc\u062a<\/th>\n<th>\u0646\u062d\u0648\u0647 \u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u062d\u0627\u0644\u062a \u0642\u0628\u0644 (Revert)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">\u0644\u063a\u0648 \u0639\u0645\u0644\u06cc\u0627\u062a \u0686\u0631\u062e\u0634 (Rotate) \u062f\u0631 \u0645\u06cc\u0627\u0646\u0647 \u062c\u0631\u06cc\u0627\u0646<\/strong><\/td>\n<td>\u0628\u0633\u062a\u0646 \u062c\u0631\u06cc\u0627\u0646 grpcurl (<code>Ctrl+C<\/code>) \u067e\u06cc\u0634 \u0627\u0632 \u0627\u0631\u0633\u0627\u0644<code>\u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc (finalize)<\/code>. \u06a9\u0627\u0646\u062f\u06cc\u062f\u0627 (Candidate) \u062d\u0630\u0641 \u0634\u062f\u0647 \u0648 \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc (Credentials) \u0642\u0628\u0644\u06cc \u0641\u0639\u0627\u0644 \u0628\u0627\u0642\u06cc \u0645\u06cc\u200c\u0645\u0627\u0646\u0646\u062f. \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0627\u0632\u06af\u0631\u062f\u0627\u0646\u062f<code>\u06a9\u062f: Canceled\u060c \u067e\u06cc\u0627\u0645: \"Credz stream failure: EOF<\/code>\u2014 \u0627\u06cc\u0646 \u0627\u0645\u0636\u0627\u06cc \u0628\u0627\u0632\u06af\u0634\u062a (rollback) \u0645\u0648\u0631\u062f \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0631 \u0646\u0633\u062e\u0647 25.3.1 \u0627\u0633\u062a.<\/td>\n<\/tr>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">\u062d\u0630\u0641 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062c\u0627\u0632 (Authorized Keys)<\/strong><\/td>\n<td>\u0627\u0631\u0633\u0627\u0644 \u06cc\u06a9<code>RotateAccountCredentials<\/code>\u0628\u0627 \u06cc\u06a9 \u0644\u06cc\u0633\u062a<code>authorizedKeys<\/code>\u062e\u0627\u0644\u06cc \u0628\u0631\u0627\u06cc \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0627\u0639\u062b \u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a (Authentication) \u0635\u0631\u0641\u0627\u064b \u0628\u0627 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0628\u0631\u0627\u06cc \u0622\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/td>\n<\/tr>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">\u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0686\u0631\u062e\u06cc\u062f\u0647 \u0634\u062f\u0647<\/strong><\/td>\n<td>\u0627\u0631\u0633\u0627\u0644 \u06cc\u06a9<code>RotateAccountCredentials<\/code>\u062f\u06cc\u06af\u0631 \u0628\u0627<code>password.accounts[*].password.plaintext<\/code>\u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0631\u0648\u06cc \u0645\u0642\u062f\u0627\u0631 \u0627\u0635\u0644\u06cc. \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062c\u062f\u06cc\u062f \u062f\u0631 \u0627\u06cc\u0646 \u0632\u0645\u0627\u0646 \u0627\u0639\u0645\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f<code>\u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc (finalize)<\/code>.<\/td>\n<\/tr>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">\u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u062a\u0645\u0627\u0645 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a (Authentication)<\/strong><\/td>\n<td>\u0627\u0631\u0633\u0627\u0644<code>RotateHostParameters<\/code>\u0628\u0627 \u0647\u0631 \u0633\u0647 \u0646\u0648\u0639:<code>AUTHENTICATION_TYPE_PASSWORD<\/code>.<\/td>\n<\/tr>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">\u067e\u0627\u06a9\u200c\u0633\u0627\u0632\u06cc HIBA<\/strong><\/td>\n<td>\u0627\u0631\u0633\u0627\u0644<code>RotateHostParameters<\/code>\u062f\u06cc\u06af\u0631 \u0628\u0627<code>tool\":\"TOOL_UNSPECIFIED<\/code>\u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u0645\u062c\u0648\u0632\u062f\u0647\u06cc (Authorization) \u0627\u0635\u0644\u06cc \u0627\u06cc\u0633\u062a\u0627.<\/td>\n<\/tr>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">\u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0627\u0632 \u06cc\u06a9<code>generateKeys<\/code>\u0645\u062e\u0631\u0628 \u06cc\u0627 \u06cc\u06a9<code>serverKeys<\/code><\/strong><\/td>\n<td>\u0646\u0627\u0645\u0648\u0641\u0642<code>RotateHostParameters<\/code>\u0627\u062c\u0631\u0627\u06cc \u0645\u062c\u062f\u062f<code>generateKeys<\/code>: <code>\u0628\u0627 \u06cc\u06a9 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u0686\u0646\u062f\u06af\u0627\u0646\u0647<\/code>KEY_GEN_SSH_KEY_TYPE_RSA_2048<code>\u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc (finalize)<\/code>. <strong style=\"color: rgb(26, 26, 26)\">\u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u0622\u0646<\/strong>\u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u200c\u0647\u0627\u06cc DSA \u0648 ECDSA-P-384 \u0627\u0632 \u0637\u0631\u06cc\u0642 Credentialz \u0642\u0627\u0628\u0644 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0646\u06cc\u0633\u062a\u0646\u062f<code>\u2014 \u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647<\/code> \/ <code>crypto key generate dsa<\/code>crypto key generate ecdsa nistp384<\/td>\n<\/tr>\n<tr>\n<td><strong style=\"color: rgb(26, 26, 26)\">\u0627\u0632 \u0637\u0631\u06cc\u0642 \u0631\u0627\u0628\u0637 \u062e\u0637 \u0641\u0631\u0645\u0627\u0646 (CLI) \u062f\u0631 IOS XR \u0627\u06af\u0631 \u0648\u0627\u0642\u0639\u0627\u064b \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f.<\/strong><\/td>\n<td>\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u06a9\u0644\u06cc\u062f \u0645\u06cc\u0632\u0628\u0627\u0646 (Host Key) \u0645\u0639\u06cc\u0648\u0628<code>RotateHostParameters<\/code>\u062f\u06cc\u06af\u0631 \u0628\u0627<code>serverKeys<\/code>. <strong style=\"color: rgb(26, 26, 26)\">\u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0645\u062d\u062a\u0648\u0627\u06cc \u0627\u0635\u0644\u0627\u062d\u200c\u0634\u062f\u0647 \u0627\u0632 \u0637\u0631\u06cc\u0642<\/strong>\u0622\u06af\u0627\u0647 \u0628\u0627\u0634\u06cc\u062f<code>\u0627\u0632 \u0646\u0633\u062e\u0647 25.3.1<\/code>\u062e\u0637\u0627\u06cc \u0646\u0648\u0634\u062a\u0646 \u0645\u062a\u0627\u062f\u06cc\u062a\u0627 (Metadata) \u062f\u0631 \u0641\u0627\u06cc\u0644<code>\u0628\u0627\u06af \u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc (finalize) \u2014 \u062a\u0623\u06cc\u06cc\u062f \u0628\u0627<\/code>GetPublicKeys<code>generateKeys<\/code>\u0648 \u0627\u062c\u0631\u0627\u06cc \u06cc\u06a9 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u0686\u0646\u062f\u06af\u0627\u0646\u0647<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 style=\"color: rgb(26, 26, 26); font-weight: 700; direction: rtl; text-align: right\">\u0645\u0631\u0627\u062c\u0639<\/h2>\n<ol style=\"direction: rtl; text-align: right\">\n<li>Cisco IOS XR \u2014 <a href=\"https:\/\/www.cisco.com\/c\/en\/us\/td\/docs\/iosxr\/cisco8000\/programmability\/b-programmability-configuration-guide-cisco8000\/m-grpc-authentication.html\" style=\"color: rgb(0, 102, 204)\">\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u067e\u0630\u06cc\u0631\u06cc (Programmability): \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a gRPC<\/a> (\u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u200c\u0647\u0627\u06cc gNSI Credentialz\u060c \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc Rotate Credentialz\u060c \u0686\u0631\u062e\u0634 \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc\u060c \u0686\u0631\u062e\u0634 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646)<\/li>\n<li>OpenConfig \u2014 <a href=\"https:\/\/github.com\/openconfig\/gnsi\/blob\/main\/credentialz\/credentialz.proto\" style=\"color: rgb(0, 102, 204)\"><code>credentialz.proto<\/code><\/a>, <a href=\"https:\/\/github.com\/openconfig\/gnsi\/blob\/main\/credentialz\/README.md\" style=\"color: rgb(0, 102, 204)\"><code>credentialz\/README.md<\/code><\/a><\/li>\n<li>OpenConfig \u2014 <a href=\"https:\/\/www.netconfcentral.org\/modules\/openconfig-gnsi-credentialz\/2024-09-10\/source\/raw\/\" style=\"color: rgb(0, 102, 204)\"><code>openconfig-gnsi-credentialz<\/code>\u0645\u062f\u0644 YANG \u0646\u0633\u062e\u0647 0.7.0<\/a><\/li>\n<li>\u0633\u0631\u06cc \u2014 <a href=\"https:\/\/xrdocs.io\/programmability\/blogs\/introducing-gnsi-grpc-native-aaa-for-cisco-ios-xr\" style=\"color: rgb(0, 102, 204)\">\u0646\u0645\u0627\u06cc \u06a9\u0644\u06cc gNSI \u062f\u0631 IOS XR<\/a><\/li>\n<\/ol>\n<hr>\n<div title=\"\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0644 \u0627\u06cc\u0646 \u0628\u062e\u0634\" style=\"display: flex\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><\/svg><\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0686\u0627\u0644\u0634 Certz \u0645\u062f\u06cc\u0631\u06cc\u062a TLS \u0631\u0627 \u0628\u0631\u0627\u06cc \u0635\u0641\u062d\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a gRPC \u0628\u0631 \u0639\u0647\u062f\u0647 \u062f\u0627\u0631\u062f\u060c \u0627\u0645\u0627 \u0627\u06a9\u062b\u0631 \u062a\u062c\u0647\u06cc\u0632\u0627\u062a \u0634\u0628\u06a9\u0647 \u062f\u0627\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc SSH \u0646\u06cc\u0632 \u0647\u0633\u062a\u0646\u062f \u2014 \u06a9\u0646\u0633\u0648\u0644\u060c VTY\u2026<\/p>\n","protected":false},"author":1,"featured_media":238,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[98,232,234,47,236,218,35],"tags":[],"class_list":["post-246","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-automation","category-gnsi","category-grpc","category-iosxr","category-programmability","category-xr7","category-security"],"_links":{"self":[{"href":"https:\/\/www.anynet.ir\/blog\/wp-json\/wp\/v2\/posts\/246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.anynet.ir\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.anynet.ir\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.anynet.ir\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.anynet.ir\/blog\/wp-json\/wp\/v2\/comments?post=246"}],"version-history":[{"count":1,"href":"https:\/\/www.anynet.ir\/blog\/wp-json\/wp\/v2\/posts\/246\/revisions"}],"predecessor-version":[{"id":248,"href":"https:\/\/www.anynet.ir\/blog\/wp-json\/wp\/v2\/posts\/246\/revisions\/248"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.anynet.ir\/blog\/wp-json\/wp\/v2\/media\/238"}],"wp:attachment":[{"href":"https:\/\/www.anynet.ir\/blog\/wp-json\/wp\/v2\/media?parent=246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.anynet.ir\/blog\/wp-json\/wp\/v2\/categories?post=246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.anynet.ir\/blog\/wp-json\/wp\/v2\/tags?post=246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}