通常、これを実行してscp file myuser@server1:~/
パスワードを入力しますが、今は最初にserver2と入力してからserver2で実行する必要がscp file myuser@server2:~/
あります。ssh myuser@server2
scp file myuser@server1:~/
これをしようとすると、ssh -L 8888:server1:22 myuer@server2
パスワードの入力を求められます。これにより、ssh myuser@server2
server2にのみ接続され、server1には接続されません。
scp
私からserver1に直接行くようにどのように機能させることができますか?
答え1
リモートサーバーに直接接続できるようにProxyCommand
/非常に簡単に構成できます。次の内容で1つを作成します。ProxyJump
scp
~/.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 .