
我想使用 SSH 設定檔透過終端使用 SFTP 或 SCP 連接並上傳 MySQL 轉儲檔案到我的遠端伺服器。根據我找到的文檔,我應該能夠做到這一點:
sftp -F db.sql.gz [email protected] /tmp
我還在我的配置中嘗試了別名:
sftp -F db.sql.gz myalias /tmp
當我執行上述兩項操作時,我只是列印出可能的命令,-F
即其中之一。
我已經可以使用本地配置中的快捷方式透過 SSH 進行連接了,所以我知道這是可行的:
ssh myalias
筆記:我使用私鑰/公鑰對進行連接,因此我不需要輸入密碼。金鑰對確實有一個與之關聯的密碼,但 OS X 鑰匙圈記住了我第一次連線時的密碼。
所以我不確定我做錯了什麼?
答案1
來自說明文字:“
... [-F ssh_config] ...
”根據上述內容,
-F
需要一個參數:OpenSSH 設定檔的路徑~/.ssh/config
或類似參數。但你給它的是一個 gzip 壓縮的 SQL 轉儲。由於 plain
ssh myalias
已經可以工作,因此您甚至不需要-F
此處的選項。只需sftp myalias
連接到伺服器即可。但是,OpenSSH
sftp
客戶端不支援像您嘗試的那樣上傳檔案;它只能下載文件(使用語法host:path
)或以互動模式工作。對於上傳,您需要使用互動模式...$ sftp myalias sftp> cd /tmp sftp> put db.sql.gz
……或
scp
工具:scp db.sql.gz myalias:/tmp
或者
scp db.sql.gz [email protected]:/tmp
(sftp 確實有批次模式,可以使用 來從檔案中讀取命令-b
,但用於單次上傳更簡單scp
。)
還有其他 SFTP 用戶端 –遠端傳輸協定適合互動使用,同時捲曲可以更容易實現自動化。對於備份等,您也可以使用同步(它運行自己的協議,但仍在 SSH 內部)。
答案2
由 ForwardAgent 配置引起的問題如下,
Host dockervm
HostName x.x.x.x
User root
Preferredauthentications publickey
ForwardAgent yes
我的情況是,這是由於 ssh 配置上的“ForwardAgent”導致 scp 掛起。一旦評論出來,對我有用。
另外,您可以擁有帶有註釋的 ForwardAgent 行的文件副本,並使用 scp -F 使其工作。