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>