私のLinux端末では、次のコマンドを使用します。
sshpass -p "pass" scp -r [email protected]:/cmshome/me/file /home/me/Desktop
パスワードを含むファイルをダウンロードしてください。 sshpassがないとダウンロードの進行状況が表示されますが、sshpassを使用すると空で完了するまで表示できません。
sshpassで見る方法はありますか?
答え1
私はあなたが要求するものを実装するのは簡単ではないか、基本的なBashスクリプトを使用して可能であるとは思わない。
したがって、以下は実際にあなたの質問に答えるのではなく、問題を解決する別の方法を提供します。
公開鍵認証(パスワードは不要)で通常のコマンドを使用する代わりにsshpass
。scp
わからない場合は[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