透過 ssh 執行 cat,透過 ssh 發送文字或文件

透過 ssh 執行 cat,透過 ssh 發送文字或文件

我正在製作一個腳本來自動發送公鑰,但我無法透過 ssh 透過「echo 或 cat」發送我的檔案或變數

答案1

如果要將文件傳送到遠端伺服器,可以使用scp.

來自 man scp:

scp 在網路上的主機之間複製檔案。它使用 ssh(1) 進行資料傳輸,並使用與 ssh(1) 相同的身份驗證並提供相同的安全性。與 rcp(1) 不同,如果驗證需要密碼或密碼短語,scp 將要求輸入密碼或密碼短語。

基本用法:

scp user@origin:/path/to/file user@target:/path/to/file

假設您要將 example.txt 從目前目錄傳輸到SERVER名為 example 的資料夾中具有相同名稱的遠端資料夾,並以 root 進行驗證:

scp example.txt root@SERVER:/example/example.txt

答案2

為了將公鑰傳輸到遠端伺服器,有一個專用的實用程序ssh 複製 ID

您將在上面找到一個可用於自動執行此任務的腳本:

#!/bin/sh
while read server ; do
   timeout 10 ssh-copy-id -i <public_key_path> <user>@$server
done < <list_of_servers.txt>

PS:將 <> 之間的常數替換為您自己的值。

答案3

您可以sshpass在腳本中使用來存取伺服器,而無需每次都輸入密碼,如下所示:

sshpass -p 'PASSWORD' ssh USER@SERVER ssh-copy-id USER@SERVER

-f如果您不想將密碼寫入名為servers.list的伺服器清單的命令列中(在兩種情況下都是明文形式),您也可以使用將密碼寫入檔案中

for SERVER in $(cat servers.list)
do
sshpass -p 'PASSWORD' ssh USER@$SERVER ssh-copy-id USER@$SERVER
done

相關內容