scpはSSHトンネルを使用します

scpはSSHトンネルを使用します

通常、これを実行してscp file myuser@server1:~/パスワードを入力しますが、今は最初にserver2と入力してからserver2で実行する必要がscp file myuser@server2:~/あります。ssh myuser@server2scp file myuser@server1:~/

これをしようとすると、ssh -L 8888:server1:22 myuer@server2パスワードの入力を求められます。これにより、ssh myuser@server2server2にのみ接続され、server1には接続されません。

scp私からserver1に直接行くようにどのように機能させることができますか?

答え1

リモートサーバーに直接接続できるようにProxyCommand/非常に簡単に構成できます。次の内容で1つを作成します。ProxyJumpscp~/.ssh/config

Host server1
  ProxyCommand ssh -W %h:%p server2

その後、scpを直接実行できます。

scp local.file server1:/path/to/remote.file

ポート転送に固執する場合は、提供する最初のコマンドで「トンネル」を作成した後:

ssh -L 8888:server1:22 server2

次の方法でデータを送信する必要があります(-P接続を転送するためのポートを設定することが示されています)。

scp -P 8888 local.file server1:/path/to/remote.file

答え2

scpリモートソースファイルとリモートターゲットファイルをサポートします。データ転送にSSHを使用するため、これはトンネリング試行と同じでなければなりません。

scp file myuser@server2:~/
scp myuser@server2:~/file myuser@server1:~/

ちなみに、myuserユーザー名がローカルログインと同じ場合は省略できます。

scp file server2:~/
scp server2:~/file server1:~/

トンネルが本当に必要な場合(ファイルがserver2ファイルシステムに触れる必要がないように)、ここに良い答えがあります。https://superuser.com/questions/276533/scp-files-via-intermediate-host

実際、この部分は答えになったと見られるかもしれません。

答え3

これはとても便利だと思います。

scp -J myuser@server2 file myuser@server1:~/

または、ラップトップと各サーバー間でユーザー名が同じままである場合は、単にユーザー名を省略できます。必要に応じて、server2をホストファイル(/ etc / hosts)に配置し、素敵で短い名前を使用してより速く入力することもできます。

# in file /etc/hosts 
74.125.71.113 s2  # this is server2

次に、server1に送信されるコマンドはfile次のようになります。

scp -J s2 file server1:~/

答え4

ホストサーバーの ~/.ssh/config に以下を配置します。

XAuthLocation /opt/X11/bin/xauth

Host remote
  User foo
  Hostname remote-server
  ProxyCommand ssh foo@gateway-server -W remote-server:22

それからscp

scp remote:~/file_to_be_copied . 

関連情報