Linuxでsshpassとscpを使用して進行状況を表示するには?

Linuxでsshpassとscpを使用して進行状況を表示するには?

私のLinux端末では、次のコマンドを使用します。

sshpass -p "pass" scp -r [email protected]:/cmshome/me/file /home/me/Desktop

パスワードを含むファイルをダウンロードしてください。 sshpassがないとダウンロードの進行状況が表示されますが、sshpassを使用すると空で完了するまで表示できません。

sshpassで見る方法はありますか?

答え1

私はあなたが要求するものを実装するのは簡単ではないか、基本的なBashスクリプトを使用して可能であるとは思わない。

したがって、以下は実際にあなたの質問に答えるのではなく、問題を解決する別の方法を提供します。

公開鍵認証(パスワードは不要)で通常のコマンドを使用する代わりにsshpassscpわからない場合は[1]をご覧ください。

scpを使用したい場合ローカル使用のためのスクリプト、これが私が考える方法です:

  • パスワードなしで公開鍵を生成する
  • ssh-copy-id公開鍵をサーバーに追加するために使用されます。

プロンプトなしでコマンドを実行できれば十分です。

scp -r [email protected]:/cmshome/me/file /home/me/Desktop

~のためデプロイするスクリプト、明示的なパスワードを使用するsshpassは確かに良い考えではありません。少なくともsshpassの「-e」フラグを使用し、セキュリティを向上させるために、ユーザーはパスワードを環境変数として提供する必要があります。

この場合、公開鍵方式はあまり便利ではありませんが、まだ可能です。スクリプトユーザーに公開鍵の生成を要求できない場合は、公開鍵を動的に生成してサーバーにコピーし、scpプロンプトなしで実行できます。

 #!/bin/bash
 KEY="$HOME/.ssh/id_rsa_example"
 if [ ! -e "$KEY" ]; then
     ssh-keygen -t rsa -N "" -f "$KEY"
     sshpass -e ssh-copy-id -i "${KEY}.pub" [email protected]
 fi
 scp -r [email protected]:/cmshome/me/file /home/me/Desktop

rsync最後に、進行状況バーを作成することができます。

$ rsync -P --rsh="sshpass -p $PASSWORD ssh -l me8" host.ca:/cmshome/me/file /home/me/Desktop

[1]https://help.ubuntu.com/community/SSH/OpenSSH/Keys

関連情報