ProxyJump
Baru di OpenSSH 7.3:
A$ scp -oProxyJump=B thefile C:destination
(Di belakang layar, ini hanya menggunakan ProxyCommand dan ssh -W
.)
Perintah Proxy
Diperbarui untuk menyertakan -W dari jawaban lain:
A$ scp -oProxyCommand="ssh -W %h:%p B" thefile C:destination
Jika A memiliki klien SSH yang sangat lama diinstal (tanpa -W
dukungan), atau jika B dikonfigurasi untuk melarang penerusan TCP (tetapi masih memungkinkan perintah shell), gunakan alternatif:
A$ scp -oProxyCommand="ssh B socat stdio tcp:%h:%p" thefile C:destination
A$ scp -oProxyCommand="ssh B nc %h %p" thefile C:destination
Pipa
A$ tar cf - thefile anotherfile | ssh B "ssh C \"cd destination && tar xvf -\""
A$ (echo thefile; echo anotherfile) | cpio -o | ssh B "ssh C \"cd destination && cpio -i\""
Hanya untuk satu file:
A$ ssh B "ssh C \"cd destination && cat > thefile\"" < thefile
"Tunnel" melalui B
A$ ssh -f -N -L 4567:C:22 B
(continues running in background)
A$ scp -P 4567 thefile localhost:destinationPath
Setelah selesai, jangan lupa untuk mematikan proses yang sebelumnya dimulai ssh
(yang telah jatuh ke latar belakang karena -f -N
).
-f
Meminta ssh untuk pergi ke latar belakang sebelum eksekusi perintah. Ini berguna jika ssh akan meminta kata sandi atau frasa sandi, tetapi pengguna menginginkannya di latar belakang. Ini menyiratkan -n.
-N
Jangan jalankan perintah jarak jauh. Ini berguna untuk hanya meneruskan porta.
Membalikkan "terowongan" melalui B ke A
Tidak selalu bekerja:
A$ ssh -f -N -R 4567:localhost:22 B
(now you can reach A from B, by using localhost:4567)
B$ scp -P 4567 localhost:thefile C:destination
-R
Menentukan bahwa koneksi ke port TCP yang diberikan atau soket Unix pada host (server) jarak jauh harus diteruskan ke host dan port yang diberikan, atau soket Unix, di sisi lokal.
A$ rsync <options> -e 'ssh B ssh' source C:destination