Mengapa halaman manual "ssh_config (5)" merekomendasikan bahwa ControlPath
opsi harus mengandung setidaknya %h
, %p
dan %r
placeholder untuk mengidentifikasi secara unik setiap koneksi bersama?
Saya pikir beberapa sesi harus berbagi soket yang sama dengan koneksi ke host yang sama. Bukankah lebih masuk akal jika memiliki definisi sederhana seperti:
ControlPath ~/.cache/ssh/mux/%h
Alih-alih sesuatu seperti:
ControlPath ~/.cache/ssh/mux/%r@%h:%p
Dalam pemahaman saya dengan definisi pertama, satu koneksi dibagi antara beberapa sesi dengan pengguna jarak jauh yang berbeda, ke host jarak jauh yang sama, pada port jarak jauh yang berbeda.
Saya ingin memiliki definisi pertama di bagian default host sehingga cukup untuk mengatakan ssh -o ControlMaster=no
.
Saya ingin berbagi koneksi ke host jarak jauh yang sama antara semua sesi yang diprakarsai oleh pengguna lokal yang sama terlepas dari pengguna jarak jauh dan port jarak jauh. Soket klien master harus hidup di bawah direktori home pengguna lokal.
sumber
Jawaban:
Mereka bisa. Namun, perhatikan bahwa jika Anda terhubung ke host menggunakan koneksi yang ada melalui
ControlPath
, terlepas dari pengguna yang Anda ingin login, Anda akan login sebagai pengguna asli koneksi. Mis., Tanpa koneksi yang mapan ke "suatu tempat":Sesi ini adalah bob @ suatu tempat.
Sesi ini juga akan menjadi bob @ suatu tempat, karena Anda menggunakan ControlPath dan set yang sama
ControlMaster=no
; jikaControlMaster=yes
, Anda akan masuk sebagai sue, tetapi ssh akan mengabaikan argumen ControlPath Anda, sebagaimana tersirat dalamman ssh_config
:Sebagai bukti tentang hal ini, jika
ControlMaster=yes
dalam kedua kasus, ketika bob keluar dari soket ControlPath~/.ssh/somewhere
akan hilang meskipun sesi "sue" masih berjalan, berarti sesi sue tidak pernah menggunakan soket itu .Jadi, jika Anda ingin menggunakan koneksi yang sama,
%h
baik-baik saja, tetapi berhati-hatilah karena Anda tidak dapat berbagi koneksi sebagai beberapa pengguna jarak jauh yang berbeda - ssh tidak akan membiarkan Anda.sumber
Anda dapat memiliki banyak pengguna dan banyak port yang digunakan bahkan untuk server yang sama. Saya sendiri, saya terhubung ke ratusan sistem di intranet perusahaan, sebagian besar memiliki banyak pengguna dengan berbagai fungsi atau server aplikasi. Akses ke userA sangat berbeda dengan akses ke userB, dan koneksi master harus berbeda. Lebih singkatnya, jika Anda menjalankan:
Seperti yang Anda lihat, kita tidak mendapatkan sesi OpenSSH dengan userB, tetapi yang asli dengan userA. Itu berarti bahwa direktori home, izin dan bahkan otentikasi itu sendiri tidak seperti yang diharapkan. Menggunakan ini, jika Anda mencoba untuk menghapus file dalam direktori userB, maka a) itu bisa menjadi file yang salah dan b) itu bisa salah izin.
Jika Anda tidak akan pernah terhubung ke lebih dari satu pengguna di satu server menggunakan satu port, maka ya, menggunakan
%h
bisa cukup. Dalam~/.ssh/config
file Anda, Anda ingin menggunakan:Dengan
ControlPersist
opsi, koneksi master tetap terbuka di latar belakang sampai terbunuh atau diakhiri denganssh -O exit
. Ini adalah fitur set-it-and-forget-it yang bagus.Tetapi jika ada setiap kemungkinan menghubungkan ke lebih dari satu pengguna pada satu tuan rumah, maka Anda akan menginginkan sesuatu yang lebih aman:
sumber