答案1
有幾種選擇:
- 使用 sshpass
執行命令:
sshpass -p 'password' scp filename user@host:
安裝 sshpass:
- 烏班圖:
sudo apt install sshpass
sshpass - 非互動式 ssh 密碼提供程序
sshpass 是一個實用程序,設計用於使用稱為“鍵盤交互”密碼身份驗證的模式運行 ssh,但以非交互模式運行。
ssh 使用直接 TTY 存取來確保密碼確實是由互動式鍵盤使用者發出的。 Sshpass 在專用的 tty 中運行 ssh,欺騙它認為它正在從互動式用戶那裡獲取密碼。
要運行的命令在 sshpass 自己的選項之後指定。通常它是帶有參數的“ssh”,但它也可以是任何其他命令。然而,ssh 使用的密碼提示目前已硬編碼到 sshpass 中。
- 使用預計(或其他腳本)
編寫一個腳本,一旦識別出 ssh 密碼提示,腳本就會注入密碼
- 使用帶有密鑰對的 ssh(而不是使用密碼)
恕我直言 - 這是最安全的方法,並且不需要使用密碼。
使用公鑰/私鑰來執行ssh
或scp
操作而無需輸入密碼。
答案2
關於如何做到這一點已經有了答案,所以我將重點討論為什麼不這樣做。
- 如果您在命令列上傳遞密碼,則本機使用者可以使用
ps
或任何其他進程列表器來窺探該密碼。 - 創建難以猜測且易於記住的密碼很困難:因此不要在 ssh 中使用密碼。
而是使用公鑰/私鑰,並使用密鑰代理來暫時記住您的密鑰。