web-dev-qa-db-ja.com

リモートにログインしているときに、ローカルのIPアドレスを知らなくても、リモートからローカルにSCPを実行できますか?

私は定期的に、リモートターミナルセッションからローカルマシンにファイルをコピーしたいと思っています。通常、リモートセッションからログアウトし、ローカルからscp転送を呼び出して、リモートからローカルにファイルをコピーします。しかし、これは少し長い感じがします。時間を節約するために、SSH経由でリモートにログインしながらファイルを転送したいと思います。私のローカルマシンは動的IP範囲からインターネットに接続されているため、リモートで接続する方法がよくわかりません。しかし、確かに、リモートセッションは私のラップトップから開始されるので、ラップトップに戻るにはscpにショートカットが必要です...

34
jnthnclrk

これには SSHトンネリング を使用できます。

トンネリングを使用すると、TCPポートをローカルマシンからリモートマシンに、またはリモートマシンからローカルマシンに転送できます。たとえば、SMTPまたはIMAPポートをローカルマシンへのファイアウォールの背後にあるリモートマシン(ローカルで実行されているかのように、ローカルでサービスにアクセスします).

ローカルマシンからリモートマシンにポート22(SSH)を転送するには、次のことを試してください。

ssh -R12345:localhost:22 yourremoteuser@remotemachine

(localhostはリモートマシンのローカル名を指すことに注意してください)

これを実行した後、次を使用してsshで家に戻ることができるはずです:

ssh -p12345 [email protected]

Scpを使用する場合は、次のようにします(scpにはポート転送用の大文字のPがあります)。

scp -P12345 filename 127.0.0.1:/tmp/filename

反対方向(リモートからローカルへ)のポート転送では、-Rではなく-Lを使用します。

上記のコマンドは、ターミナルsshクライアントを使用していることを前提としています。 PuTTY for Windowsなどのグラフィカルクライアントもトンネリングをサポート

20
Daniel Lundmark

リモートマシンのコマンドラインで次のことを試してください。ルーターのポート転送を有効にする必要がある場合があります。

scp <file on remote machine> ${SSH_CLIENT%% *}:<directory on local machine>

ソース: 接続元のホストにファイルを簡単にscpする (commandlinefu.com)

6
Patrick McLaren

たぶん zssh

zssh(Zmodem SSH)は、セキュアシェル(ssh)を使用しながらリモートマシンにファイルをインタラクティブに転送するためのプログラムです。 scpの便利な代替手段となることを目的としており、別のセッションを開いて自分自身を再認証することなくファイルを転送できます。

zsshはsshのインタラクティブなラッパーです

Zmodemファイル転送の由緒あるrz、sz実装を使用します。

1
RedGrittyBrick

この質問に賛成して、これも私が達成したいものです簡単に

関連する回答は次のとおりです: ホームネットワークの外にいるときにリモートマシンからローカルマシンにSCPするにはどうすればよいですか?

ネットワークの外部からsshへのアクセスを許可する必要があります。これは、ブロードバンドルーターのポートをサーバーのLAN IPに転送することで行われます。ただし、外部からのsshアクセスを許可することにはセキュリティ上の懸念があるため、ssh、特にキーベースの認証を保護し、パスワード認証を完全に無効にする方法を検討することもできます。

1
Mars Robertson

より簡単なソリューションが必要な場合は、Dropboxアカウントを開き、リモートマシンに移動して、wgetを実行します( here から変更されたバージョン):wget --no-check-certificate https://www.dropbox.com/s/2123jshf/ABC.pdf?dl=1 -O abc.pdf

0
alex

1つの解決策は、ローカルマシンでsshセッションを一時停止し、ローカルマシンでコピーを実行してから、中断したところからsshセッションを再開することです。

たとえば、myuser @ remoteに接続していて、ファイルlol.txtをローカルコンピュータにコピーするとします。まず、ローカルマシンでsshを一時停止したいと思います。通常は使用します Ctrl-Z 一時停止しますが、リモートシェルに送信されるため、sshでは機能しません。代わりに、sshエスケープシーケンスを使用する必要があります。 Enter~。 sshプレスを一時停止するには Enter~Ctrl-Z。これで、ローカルマシンでコマンドを実行できます。

user@localmachine:~$ scp user@remote:/path-to-file/lol.txt /dest-path/lol.txt

ファイルをコピーしてから、あなたが残した場所に正確にsshに戻る

user@localmachine:~$ fg

0
user213610