
為了在這些伺服器上執行任何操作時不輸入密碼,我需要將 ssh 憑證上傳到遠端:
ssh-copy-id CptBartender@remote
現在...我需要將該憑證上傳到 400 多個伺服器,我正在嘗試找到一種方法來避免多次鍵入/貼上我的密碼。
問題是:如何在 Windows 上(使用 MinGW)自動執行此操作? Cygwin 很可能不是一個選擇,因為它似乎位於地獄般的企業防火牆後面。
到目前為止我已經:
- 建立一個腳本,該腳本將迭代每個遙控器,但它要求每個遙控器輸入密碼
- 嘗試傳遞密碼但
yes
無濟於事 - 閱讀有關 的內容
expect
,但找不到讓它在 MinGW 上運行的方法 - 閱讀有關
sshpass
- 與expect
我有想過AutoIt
,但一定有更好的方法...
答案1
PuTTYplink
可以接受密碼作為命令列參數。它沒有與 直接等效的東西ssh-copy-id
,但可以輕鬆編寫腳本,例如透過手動執行命令...
plink foo@bar -pw baz "mkdir -p ~/.ssh && echo 'ssh-ed25519 AAAA...' >> ~/.ssh/authorized_keys"
...或者透過上傳文件pscp
。
另外,如果expect
無法在 Windows 上運行,您肯定可以在這 400 台 Linux 伺服器中的一台上運行它嗎?
(另外,考慮到這些數字,也許您應該考慮從 LDAP 提取金鑰,或者使用 AD/Kerberos?最近的 OpenSSH 版本具有用於 LDAP 整合的掛鉤,而不再需要第三方修補程式。)
答案2
你可以尋找上面提到的 Putty plink 工具。或者您可以考慮將來使用其中一種組態管理系統,例如 Puppet、Ansible 或 Chef。您可以使用其中任何一個立即向所有伺服器添加一些憑證。
尋找你的伺服器號碼我認為你真的需要考慮一下。它們可用於大多數常規伺服器管理任務,包括使用者管理、檔案和目錄管理以及軟體。