私は定期的にリモートの端末セッションからローカルのマシンにファイルをコピーしたいと思っています。通常はリモートセッションからログアウトして、ローカルからscp転送を呼び出してリモートからローカルにファイルをコピーします。しかし、これは少し長文に感じます。時間を節約するために、SSHを使ってリモートにログインしている間にファイルを転送したいのですが。私のローカルマシンは動的なIP範囲からインターネットに接続されているので、リモートに接続する方法がよくわかりません。しかし、確かに、リモートセッションはラップトップから発信されているので、ラップトップに戻るためのショートカットが scp にあるはずです…だろう?
36 jnthnclrk 2011-05-30
これにはSSH トンネリングを使用します
トンネリングを使用すると、ローカルマシンからリモートマシンへ、またはリモートマシンからローカルマシンへ TCP ポートを転送することができます。私はこれを頻繁に使用して、例えば SMTP や IMAP ポートをファイアウォールの向こう側にあるリモートマシンからローカルマシンに転送します (そして、ローカルで実行されているかのようにローカルでサービスにアクセスします)
22番ポート(SSH)をローカルマシンからリモートマシンに転送するには、次のようにします
ssh -R12345:localhost:22 yourremoteuser@remotemachine
(localhost はリモートマシンのローカル名を参照することに注意してください)
これを実行した後、これを使って ssh で家に戻れるようになるはずです
ssh -p12345 yourlocaluser@127.0.0.1
scpを使う場合は、(scpはポート転送のために大文字のPをつけています)のようなことをします
scp -P12345 filename 127.0.0.1:/tmp/filename
他の方向(リモートからローカルへ)へのポート転送では、-R の代わりに -L を使用します
上記のコマンドは、ターミナルの ssh クライアントを使用していることを前提としています。Windows 用 PuTTY のようなグラフィカルなクライアントもトンネリングをサポートしています
20 Daniel Lundmark 2011-05-30
リモートマシンからコマンドラインで以下を試してみると、ルータでポート転送を有効にする必要があるかもしれません
scp <file on remote machine> ${SSH_CLIENT%% *}:<directory on local machine>
ソースは以下の通りです。接続元のホストにファイルを簡単に scp して送り返す (commandlinefu.com)
7 Patrick McLaren 2014-06-12
もしかしてzssh?
zssh (Zmodem SSH) は、セキュアシェル (ssh) を使ってリモートマシンにファイルをインタラクティブに転送するためのプログラムです。これは scp の便利な代替手段として意図されており、別のセッションを開いて自分自身を再認証することなくファイルを転送することができます
zssh は ssh の対話型ラッパーです
zmodem ファイル転送の由緒ある rz,sz の実装を使用しています
1 RedGrittyBrick 2012-01-19
この質問にUpvotしました、これは私も簡単に達成したいものです
ここに関連する回答があります。ホームネットワークの外にいるときに、リモートマシンからローカルマシンにSCPするにはどうすればいいですか?
ネットワーク外からの ssh へのアクセスを許可する必要があります。これは、ブロードバンドルータのポートをサーバの lan ip に転送することで行います。しかし、外部からの ssh アクセスを許可することにはセキュリティ上の懸念があるので、 ssh を安全にする方法、特に鍵ベースの認証やパスワード認証を完全に無効にする方法を検討するのもよいでしょう
1 Mars Robertson 2012-08-10
1 つの解決策は、ローカルマシン上で ssh セッションを一時停止し、ローカルマシン上でコピーを実行して、その後、前の場所で ssh セッションを再開することです
例えば、myuser@remote に接続していて、lol.txt というファイルをローカルコンピュータにコピーしたいとします。まず、ローカルマシンでsshをサスペンドしたいと思います。通常は Ctrl–Z を使ってサスペンドしますが、リモートシェルに送られてしまうので、これではうまくいきません。その代わりに、Enter~ のような ssh エスケープシーケンスを使わなければなりません。そのため、ssh をサスペンドするには Enter~ Ctrl–Z を押してください。これでローカルマシン上でコマンドを実行できるようになりました
user@localmachine:~$ scp user@remote:/path-to-file/lol.txt /dest-path/lol.txt
を使用してファイルをコピーしてから、元の場所に正確に ssh に戻ります
user@localmachine:~$ fg
0 None 2013-04-13
もっとシンプルな解決策が必要な場合は、dropboxのアカウントを開き、リモートマシンに移動してwgetを実行してください(こちらの修正版)。wget --no-check-certificate https://www.dropbox.com/s/2123jshf/ABC.pdf?dl=1 -O abc.pdf
0 alex 2015-10-29