SSHを使用してファイルをローカルシステムにコピーする

SSHを使用してファイルをローカルシステムにコピーする

システムにSSHで接続している場合は、他の端末や画面セッションを開始してscpなどを実行したり、リモートシステムからローカルシステムにSSHを使用せずにファイルをローカルシステムにコピーしたりする方法はありますか?

ベストアンサー1

主な接続

事前に計画を立てると、これが最も簡単です。

初めて基本接続を開きます。後続の接続の場合、スレーブ接続は既存のマスター接続を介してルーティングされます。あなたの~/.ssh/config、接続共有設定が自動的に行われます。

ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r

既存の接続と同じ接続(ユーザー、ポート、コンピュータ)でSSHセッションを開始すると、2番目のセッションは最初のセッションを介してトンネルされます。 2番目の接続を確立するために新しい認証は必要なく、非常に高速です。

したがって、有効な接続があればすぐに次のことができます。

今後

既存の接続を介してリバースSSHトンネルを確立できます。 SSHコマンドラインでは、-R 22042:localhost:2222042はリモートシステムの他のポート番号とは異なるランダムに選択された番号を転送してリモート転送を生成します。これにより、リモートコンピュータがssh -p 22042 localhost元のコンピュータに再接続され、それを使用してscp -P 22042 foo localhost:ファイルをコピーできます。

を使用してさらに自動化できますRemoteForward 22042 localhost:22。問題は、複数のSSHインスタンスを使用して同じシステムに接続した場合、または他の人がそのポートを使用している場合は転送されないことです。

最初からリモート転送を有効にしていない場合は、既存のSSHセッションで実行できます。タイプEnter ~C Enter -R 22042:localhost:22 Enter。詳細については、マニュアルの「エスケープ文字」を参照してください。

その中にも興味深い情報があります。このサーバー障害スレッド

コピーして貼り付ける

ファイルが小さい場合は、それを入力してターミナル出力からコピーして貼り付けることができます。ファイルに印刷できない文字が含まれている場合は、次のようなものを使用してください。64ビットベース

Remote.example.net$base64 <myfile
(コピー出力)
local.example.net$base64 -d >myfile
(クリップボードの内容を貼り付け)
Ctrl+D

より便利には、X転送が有効になっている場合は、ファイルをリモートシステムにコピーしてローカルに貼り付けることです。データをパイプに入って出ることができます。xclipまたはxsel。ファイル名とメタデータを保存するには、アーカイブをコピーして貼り付けます。

remote.example.net$ tar -czf - myfile | xsel

local.example.net$ xsel | tar -xzf -

おすすめ記事