Saya menyarankan yang berikut di .ssh/config Anda :
Host C
User user
ProxyCommand ssh -W %h:%p [email protected]
Saya tidak jauh lebih aman jika host B tidak dipercaya, dan berfungsi untuk scp dan sftp.
Seperti yang dijelaskan dalam jawaban ini, Anda dapat menggunakan ProxyCommand direktif untuk memiliki ssh host memantulkan Anda ke host ketiga secara transparan:
Katakanlah Anda memiliki tiga host berikut:
workstation.example.com- Ini adalah mesin yang sedang Anda kerjakan secara fisikproxy.example.com- Ini adalah mesin tempat Anda merutekan lalu lintas SSH Andaendpoint.example.com- Di sinilah Anda ingin lalu lintas berakhir
Di ~/.ssh/config pada workstation , tambahkan berikut ini:
Host endpoint
User endpointUser # set this to the username on the endpoint host
HostName endpoint.example.com
ProxyCommand ssh [email protected] nc %h %p 2> /dev/null
Di proxy tuan rumah, pastikan nc (netcat) diinstal.
Lalu, pada workstation , Anda dapat ssh endpoint atau sftp endpoint dan Anda akan diproksi secara transparan ke mesin melalui host proxy Anda. scp juga akan berfungsi.
Itu mungkin dan relatif mudah, bahkan saat Anda perlu menggunakan sertifikat untuk autentikasi (umumnya di lingkungan AWS).
Perintah di bawah ini akan menyalin file dari remotePath di server2 langsung ke mesin Anda di localPath. Secara internal, permintaan scp diproksi melalui server1.
scp -i user2-cert.pem -o ProxyCommand="ssh -i user1-cert.pem -W %h:%p [email protected]" [email protected]:/<remotePath> <localpath>
Jika Anda menggunakan autentikasi kata sandi, coba dengan
scp -o ProxyCommand="ssh -W %h:%p [email protected]" [email protected]:/<remotePath> <localpath>
Jika Anda menggunakan kredensial pengguna yang sama di kedua server:
scp -o ProxyCommand="ssh -W %h:%p [email protected]" [email protected]:/<remotePath> <localpath>