中間サーバーを介してファイルをSCPするにはどうすればよいですか?


15

WinXPで(bashシェルを使用して)Ccygwinを使用しています。localhostからリモートマシンhost2にファイルをSCPします。ただし、中間マシン(host1)にのみSSHで接続し、そこからhost2にSSHで接続できます。(注、localhostからhost2にアクセスできません)。

トンネルは私の答えだと思っていましたが、トンネルを設定しようとすると

ssh -L 9999:localhost:9998 dalvarado@host1 'ssh -L 9998:localhost:1234 -N dalvarado@host2'

しかし、このコマンドを入力してEnterキーを押すと、システムがハングします。トンネルを設定してからファイルをSCPする適切な方法は何ですか?

ありがとう、-


2
superuser.com/questions/174160/の複製-以下の回答を参照してください。
jmetz

ユーザーからのメイアD:も参照してくださいserverfault.com/questions/337274/...
fixer1234

回答:


17

これはすでにここで最もよく回答されています

要約すると: ~/.ssh/config

Host target.machine
User          targetuser
HostName      target.machine
ProxyCommand  ssh proxyuser@proxy.machine nc %h %p 2> /dev/null

そして、scpproxy.machineを介してプロキシしたいときはいつでも単にtarget.machineに!

でも動作しsshますので、ターゲットマシンへのssh-ingの時間も節約できます。

クレジットは、2011年にこれに回答したuser24925に送られます。


13

SSHトンネルをセットアップするには、次の形式を使用します。

ssh -L 9999:host2:22 user@host1

このコマンドはhost1asに接続し、userポート22にコマンドを発行するコンピューターのポート9999をトンネルしますhost2-Nオプションであるか、必要に応じてtopまたはのようなものを使用しwatchてセッションを維持できます。

次に、scplocalhost:9999のhost2に移動します。


1
このコマンドを実行すると、host1にログインすることになりますか?また、このコマンドを実行した後、別のbashシェルを開いて「scp hello.txt localhost:9999」を実行しましたが、「ssh:ホストlocalhostポート22への接続:接続拒否」エラーが発生しました。ここで何が間違っていますか?
デイブ

3
このコマンドを実行すると、host1に接続されます、はい。あなたのscpコマンドの構文が間違っていても。ログインしたいユーザーがいるscp -P 9999 hello.txt user@localhost:/path/to/destination/file場所でこれを試してください。userhost2

1
@Rain、あなたは主な答えにこの例を入れることができます;)
dmeu

5

OpenSSH 7.3以降では、-Jまたは-o ProxyJumpを使用して要塞/ジャンプホストを指定できます。したがって、node2経由でSSHに接続するにはnode1

ssh -J you@node1 you@node2

SCPには-J引数はありませんが、許可するため-o、これは機能します。

scp -o ProxyJump=you@node1 file.txt you@node2:~

3

次のように、最初にファイルをhost1にscpできます。

scp file dalvarado@host1:.

次に、これを実行してhost2に取得します。

ssh -t dalvarado@host1 'scp file dalvarado@host2:.'

-tオプションsshのために、それを簡単にすることがあり、それは疑似端末を割り当てるための力、scp host1では、パスフレーズ/パスワードの入力を要求します。どこでもssh-agentを実行して設定している場合、パスフレーズ/パスワードの入力を求められるべきではありません。

トンネルを使用した場合、まだ2つのコマンドが必要になるため、この代替手段を提供します。1つはトンネルをセットアップし、もう1つはファイルをコピーします。これは簡単そうです。


素晴らしい解決策!!!
リカルド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.