如何從 ydk-py 連接到部署在 EC2 NETCONF 會話上的 Cisco CSR 1000v
我
ydk-py
在我的遠端伺服器 Linux Ubuntu 中執行 docker Yang Development Kit for python。我想在那裡使用以下命令建立連接。
(ydk-py)samples$ ./bgp.py --host <ip-address-of-netconf-server> -u <username> -p <password> --port <port-number>
主機
EC2 instance
在 AWS 中的位置。我曾經從我的機器上訪問EC2 instance
,ssh
在那裡我下載了ssh key
.以下參數是已知的
--host <ip-address-of-netconf-server> -u <username>
,但如何獲取密碼和埠?換句話說,如何使用下載的 RSA 密鑰建立 NETCONF 會話刪除伺服器到 Cisco CSR 1000v?
我設法找到了解決方案。
在路由器中:
(config)#user any-user-name privilege 15 secret supersecretpassword
然後,它奏效了!感謝任何試圖提供幫助的人:)
奧基,我要試一試答案。這可能不會讓你一路走好,但希望這是一個起點。
EC2
我認為您實際面臨的問題是 AWS 要求您使用密鑰對 v1000 實例進行身份驗證,但 YDK 在建構時考慮了密碼身份驗證。您可以嘗試破解實例並啟用密碼身份驗證,但我不會說這是可取的。
看起來 Netconf 在埠上執行,
830
但所有涉及 SSH 訪問的 AWS 指南都指的是對 linux 實例本身進行砲擊,除非我誤解了。思科的指南有一節關於使用 SSH 連接到 CSR 1000v 實例:
AWS 上的 Cisco CSR 1000v 實例需要 SSH 才能訪問控制台。要訪問 Cisco CSR 1000v AMI,請執行以下步驟
$$ snip $$
ssh -i pem-file-name ec2-user @[public-ipaddress | DNS-name ]
這沒有提到任何關於埠的事情
830
為此配置密鑰,在指南前面提到過,聽起來類似於為任何 EC2 linux 實例設置密鑰,並且可能應該與 IAM 使用者一起使用,正如您提到的那樣。
哪一個
我到處搜尋有關
ydk-py
密鑰身份驗證的資訊,但一無所獲。提到了一些密鑰,但通常用於訪問託管ydk-py
而不是連接到 Cisco 盒子的系統。但是,您連結的儲存庫似乎正在使用ydk.providers.NetconfServiceProvider,它是 C++ NetconfServiceProvider 的 Python 包裝器。根據此連結,支持密鑰:
private_key_path
– (str
) 私鑰文件的路徑。需要 public_key_path 欄位。不允許密碼欄位。public_key_path
– (str
) 公鑰文件的路徑。需要 private_key_path 欄位。不允許密碼欄位。讓我們看看如何
bgp.py
實現這一點。它實際上在文件session_mgr.py中。此程式碼處理您在命令行上傳遞的參數:parser = OptionParser(usage, formatter=HelpFormatterWithLineBreaks()) parser.add_option("-v", "--version", dest="version", help="force NETCONF version 1.0 or 1.1") parser.add_option("-u", "--user", dest="username", default="admin") parser.add_option("-p", "--password", dest="password", default="admin", help="password") parser.add_option("--proto", dest="proto", default="ssh", help="Which transport protocol to use, one of ssh or tcp") parser.add_option("--host", dest="host", default="localhost", help="NETCONF agent hostname") parser.add_option("--port", dest="port", default=830, type="int", help="NETCONF agent SSH port")
然後就在下面,創建了一個實例。
ne = NetconfServiceProvider(address=o.host, port=o.port, username = o.username, password = o.password, protocol = o.proto)
所以在這個階段,您可以嘗試將
private_key_path
set 傳遞給您的 AMI 使用者的 PEM 文件。然而,這就提出了一個問題:為什麼預設埠是 830?看起來這可能是與之前設置的單獨的密鑰對。或者,也許我不明白。授予 AMI 映像的 shell 訪問權限實際上是帶有密鑰的 netconf 嗎?也許有更多思科知識的人可以為此做出貢獻。
在此 AWS 版本的 CSRV1000 上搜尋有關更改 netconf 憑證的文件也沒有帶來太多幫助。正如我在評論中提到的,有一個指南表明該組合是
cisco1/cisco1
.不是一個完整的解決方案,但希望這會有所幫助。