scp 多くのファイル、パスワードを再入力する必要はありません、すべて異なるパス [重複]

scp 多くのファイル、パスワードを再入力する必要はありません、すべて異なるパス [重複]

どうすれば多くの結果が得られますか?

scp ~/here/is/one me@remote:~/where/it/goes
scp ~/yet/another me@remote:~/the/second/place
scp ~/the/number/three/one me@remote:~/foo/bar/qux

リモートユーザーのパスワードは一度だけ入力できますか?

答え1

OpenSSHでは、初めて実行する「メインモード」を使用でき、ssh接続を確立して認証し、接続をアクティブに保ち、追加の指示を待っている間にバックグラウンドに配置されます。この背景接続はUNIXソケットの命名これはssh意図的に独自のコンテキストプロセスによって生成されます。したがって、scp最終的に明示的に閉じるまで、独自の新しい接続を確立するのではなく、これらのバックグラウンド接続を使用するようにコマンドに指示します。

bgconnたとえば、次の例では、現在のディレクトリにあるランダムに名前が付けられたファイルのUNIXソケットを介してバックグラウンド接続が使用されます。

ssh -fMNS bgconn -o ControlPersist=yes me@remote
scp -o ControlPath=bgconn ~/here/is/one me@remote:~/where/it/goes
scp -o ControlPath=bgconn ~/yet/another me@remote:~/the/second/place
scp -o ControlPath=bgconn ~/the/number/three/one me@remote:~/foo/bar/qux
ssh -S bgconn -O exit -

最初はssh接続を確立し、最後は単に最初に接続を終了して終了するように指示します。この場合、bgconnソケットファイルも削除されます。その間のコマンドは、名前付きUNIXソケット(したがって確立された接続)にそのファイルをコピーするために使用されるように指示します。上記の例のように名前付きソケットを使用するように指示した場合は、同じバックグラウンド接続を使用して必要な数のコマンドをscp実行できます。sshsftp

ssh特に、最初のオプションで使用されたオプションは次のとおりです。

  • -f認証成功後にsshバックグラウンドに切り替える
  • -Mマスターモードの有効化
  • -Nリモートコマンドを要求しないでください。それ以外の場合は、デフォルトの動作(この場合は意味なし)はリモートシェルとして実行されます。
  • -Sファイルシステムに生成されるUNIXソケット名のパス
  • -o ControlPersist=yes明示的に閉じるまでバックグラウンドsshプロセスが持続するようにします。それ以外の場合は、最初の操作の終わりにそれ自体が終了します。

OpenSSH「基本モード」の仕組み:

SSHプロトコル自体は複数いわゆる「チャンネル」SSH接続を共有します。これらの各チャネルは、ターミナルセッション、リモートコマンド、ポート転送など、SSHでサポートされているサービスの1つを表します。これはデフォルトでポート転送を要求できる基盤です。~と一般的な端末セッション。

OpenSSHのクライアントコマンドは、ssh上記のように「メインモード」を介して接続共有機能を外部アプリケーションに慎重にエクスポートします。より正式な説明はここにあります

答え2

SSHファミリでは、パスワードを複数回入力したくない場合は、SSHキーを使用する必要があります。

これは他のホストによって生成され、ssh-keygen他のホストに送信されますssh-copy-id(公開鍵のみが送信されます)。

鍵が暗号化されていない場合、パスワードは要求されません。

ファイルのプライベート状態(攻撃...)を信頼していない場合は、鍵を暗号化できますssh-keygen -p

暗号化キーを使用するとパスワードの入力を求められますが、有効にすることができますeval $(ssh-agent)。エージェントは、ユーザーが入力したとおりにキーをメモリに保存できますssh-add。その後、パスワードは一度だけ要求され、ssh-addそのキーはssh / scpに使用できます。

これ以上プロキシが必要ない場合ssh-agent -k

関連情報