GNU/Linux >> Linux の 問題 >  >> Linux

Ssh – Sshを使用してファイルをローカルシステムにコピーし直しますか?

SSH経由でシステムにログインしている場合、別のターミナルや画面セッションを起動してscpなどを実行したり、リモートシステムからSSHを実行せずに、ファイルをローカルシステムにコピーして戻す方法はありますか。ローカルシステム?

承認された回答:

マスター接続

事前に計画しておくと最も簡単です。

初めてマスター接続を開きます。以降の接続では、既存のマスター接続を介してスレーブ接続をルーティングします。 ~/.ssh/configで 、接続の共有が自動的に行われるように設定します:

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

既存の接続と同じ(ユーザー、ポート、マシン)へのsshセッションを開始すると、2番目のセッションが最初のセッションにトンネリングされます。 2番目の接続の確立には、新しい認証は不要で、非常に高速です。

したがって、アクティブな接続があれば、すぐに次のことができます。

  • scpを使用してファイルをコピーします またはrsync;
  • sshfsを使用してリモートファイルシステムをマウントします。

転送

既存の接続では、リバースsshトンネルを確立できます。 sshコマンドラインで、-R 22042:localhost:22を渡してリモート転送を作成します ここで、22042はランダムに選択された番号であり、リモートマシンの他のポート番号とは異なります。次に、ssh -p 22042 localhost リモートマシンでは、ソースマシンに接続し直します。 scp -P 22042 foo localhost:を使用できます ファイルをコピーします。

RemoteForward 22042 localhost:22を使用すると、これをさらに自動化できます。 。これに伴う問題は、sshの複数のインスタンスを使用して同じコンピューターに接続する場合、または他の誰かがポートを使用している場合、転送を取得できないことです。

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

このサーバー障害スレッドには、いくつかの興味深い情報もあります。

コピー&ペースト

ファイルが小さい場合は、ファイルを入力して、ターミナル出力からコピーアンドペーストできます。ファイルに印刷できない文字が含まれている場合は、base64などのエンコーディングを使用してください。

remote.example.net$ base64 <myfile
(copy the output)
local.example.net$ base64 -d >myfile
(paste the clipboard contents)
Ctrl+D

より便利なことに、X転送をアクティブにしている場合は、ファイルをリモートマシンにコピーして、ローカルに貼り付けます。 xclipとの間でデータをパイプ処理できます またはxsel 。ファイル名とメタデータを保持する場合は、アーカイブをコピーして貼り付けます。

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

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

Linux
  1. SCPとRsyncでファイルをコピーする

  2. 暗号化されたホームディレクトリを持つUbuntuシステムへのauthorized_keysを使用したSSH?

  3. リモート コマンドの出力をローカル クリップボードにコピーするにはどうすればよいですか?

  1. リモートパスワードの入力を求める SSH による Rsync

  2. ETAを使用したLinuxファイルのコピー?

  3. iptablesはローカル接続をリモートシステム/ポートにリダイレクトします

  1. noatimeでLinuxシステムのパフォーマンスを向上させる

  2. SCP Linuxコマンド–リモートからローカルへのSSHファイル転送方法

  3. SSH キー認証を使用して、別のユーザー名でリモート システムにログインできますか?