sshで帯域制限(pvコマンド)

scpなら-lオプションで帯域制限出来るので、絶対sshでもあるはず!

と思って、manやらnetやら調べたけど無さそう。

なんでそんな必要があるかと言うと、自分の場合、リモートの運用中のサーバにsshでログインして、tarでまるごとシステムのコピーを取得するなんてことが多々ある。

その場合、実運用中のサーバからデータを取るので、なるべく運用中のサーバやネットワークに負荷を掛けずに持ってきたい。

で調べた結果pvっていうコマンドを使えば良さそう。

debian/ubuntuならapt-getで一発インストールだと思う。Red HatやCentだと標準レポジトリには無いと思う。

 

 

 

別にsshに限った話ではなく、標準入出力の帯域制限を行ってくれて、しかもプログレスバーで進捗とかも見せてくれる。

帯域制限は-Lオプションで指定できる。kとかmとかgとか

pvの引数にファイルを渡してやると

 

 

 

パーセンテージまで出してくれる。たぶん元ファイルのサイズが分かるから。

パイプで挟まれると

 

 

元ファイルのサイズがわからないので、パーセンテージは出せないが帯域制限はかかっている。

 

sshで使う時も、パイプであれば何ら変わらない。

 

 

 

うーん。sshだけじゃなくて何かと便利っぽい。

sshのホスト鍵チェックを回避する

sshのホストキーチェックは、man in the middle攻撃を防ぐのには、重要だが、閉じた検証環境などで、

毎回、known_hostsファイルを編集したりしなくてはならずちょっと煩わしい。

で、なんかsshコマンドにオプション付ければ、回避できるか調べたら以下で行けた。

 

 

 

ホストキーチェックを無効にして、known_hostsを/dev/nullにしてやる感じ。

ただ、毎回これを入力するのは、面倒なので、aliasでnsshにしてみた。.bashrcに以下を追加

 

 

 

折角なのでscpも追加。

これでホスト鍵チェックを無効にしたい時は、nsshを代わりに使えばOK

ssh多段ログイン時のチルダ

sshで何個かホストを経由してるとき、~.(チルダ ドット)で切断しようとすると、一番手前のセッションが切断されてしまう。
その場合チルダを複数入力すれば、切断したいホストに送ることが出来る。


mypc -> A -> B
にログインしてる場合

 

 

 

チルダの使い方は、manを見れば詳しく書いてあるので、
ここでは簡単な説明だけします。

  • チルダの前に一回Enterを押す
  • チルダの後ろに実行したいコマンドを渡す
    ~. 切断
    ~C コマンドライン(ポートフォワードでよく使う)
    ~? ヘルプ