Ssh

.ssh/config 的 scp -l bandwidth_cap 等效?

  • June 13, 2014

簡寫:

您可以限制交換機scp使用的頻寬-l,傳遞一個以 kbits/sec 為單位的數字。

我寧願在我的.ssh/config文件中為某些名稱機器設置它。

什麼是等效的命名設置-l?我一直沒能找到它。

後續問題:

通常,不確定如何在 ssh 命令行選項和配置名稱之間來回映射,缺少進行 Google 搜尋或逐個手動比較手冊頁。有沒有直接將兩者等同起來的表?

第一個問題的較長形式,帶有上下文:

我已經開始大量使用 ssh 配置,尤其是現在我需要通過代理並進行大量埠映射。根據我需要的隧道類型,我什至多次定義同一台機器。

但是,當上傳大文件時,很難在我的機器上做任何其他事情。即使我的下載頻寬比最多,我認為這scp會使連結飽和,所以即使我的小請求也無法到達 Internet。

對此有一個修復,使用-l頻寬命令行開關為scp.

scp -l 1000 bigfile.zip titan:

我想在我的配置中使用它,所以我會創建一個名為“titan-upload”的附加命名條目,每當我上傳時我都會使用它作為目標。

所以而不是:

scp bigfile.zip titan:

我會說:

scp bigfile.zip titan-upload:

甚至根據我的位置設置不同的上限:

scp bigfile.zip titan-upload-from-work:
 vs.
scp bigfile.zip titan-upload-from-home:

我一般在 Mac 和 Linux 上。

唉,如前所述,沒有看到有限制頻寬的配置選項。(我檢查了原始碼!)

一些可能的解決方案是使用 scp 的別名或函式。Bash 通常是 mac 和 linux 上的預設 shell,所以這可以工作:

alias scp='scp -l 1000 '
    -or-
alias scp-throttle='scp -l 1000 '

(注意引號內的尾隨空格!1)這將導致您使用的每個scp 命令來限制頻寬。考慮到您的情況,也許是整體上最好的解決方案。

第二個可能是一個不錯的選擇,因為您可以使用 scp 進行“正常”傳輸,使用 scp-throttle 進行較慢的傳輸。

或者一個功能,有更多的大腦:

function scp { if [ "$*" =~ "-upload" ]; then command scp -l 1000 "$@"; else command scp  "$@"; fi; }

基本上,如果我們在參數中的任何位置找到“ -upload ”,我們就會使用 bw 限制執行傳輸,否則會發生正常傳輸。

這將允許您繼續使用多個名稱/別名來表示操作。

  • scp aaa titan:- 會正常上傳
  • scp aaa titan-upload:- 會節流
  • scp titan:aaa .- 普通的
  • scp titan-upload-from-home:aaa .- 節流
  • scp a-file-to-upload titan:- 哎呀,節流,不是故意的!

編輯:

1 - 別名內的尾隨空格允許在別名命令之後進一步擴展別名。非常有幫助/有用。Bash Man Page, __ALIASES__ section

引用自:https://unix.stackexchange.com/questions/136883