OpenSSH menonaktifkan ControlMaster untuk nama host yang diberikan


20

Saya menggunakan OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011dengan Mac OS X Snow Leopard. Saya memiliki ControlMasterfitur yang dikonfigurasi untuk menjaga koneksi yang persisten. Saya ~/.ssh/configmemiliki yang berikut:

Host *
  ControlPath /ms/%r@%h:%p
  ControlMaster auto
  ControlPersist 4h

Host *.unfuddle.com
  ControlMaster no

Namun, dari apa yang saya lihat - bahkan ketika saya mencoba menggunakan SSH untuk host unfuddle.com, koneksi master selalu dibuat:

[andrey-mbp ~] $ ssh -v git@droolit.unfuddle.com
OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Membaca data konfigurasi / Pengguna /akhkharu/.ssh/config
debug1: /Users/akhkharu/.ssh/config baris 1: Menerapkan opsi untuk *
debug1: /Users/akhkharu/.ssh/config baris 6: Menerapkan opsi untuk * .unfuddle.com
debug1: Membaca data konfigurasi /usr/local/Cellar/openssh/5.9p1/etc/ssh_config
debug1: auto-mux: Mencoba master yang ada
debug1: Soket kontrol "/ms/git@droolit.unfuddle.com:22" tidak ada
debug1: Menghubungkan ke droolit.unfuddle.com [174.129.5.196] port 22.
debug1: Koneksi berhasil dibuat.
debug1: file identitas / Pengguna /akhkharu/.ssh/id_rsa tipe 1
debug1: file identitas / Pengguna /akhkharu/.ssh/id_rsa-cert tipe -1
debug1: file identitas / Pengguna /akhkharu/.ssh/id_dsa tipe 2
debug1: file identitas / Pengguna /akhkharu/.ssh/id_dsa-cert tipe -1
debug1: file identitas / Pengguna /akhkharu/.ssh/id_ecdsa tipe -1
debug1: file identitas / Pengguna /akhkharu/.ssh/id_ecdsa-cert tipe -1
debug1: Protokol jarak jauh versi 2.0, versi perangkat lunak jarak jauh OpenSSH_5.8
debug1: match: OpenSSH_5.8 pat OpenSSH *
debug1: Mengaktifkan mode kompatibilitas untuk protokol 2.0
debug1: String versi lokal SSH-2.0-OpenSSH_5.9
debug1: SSH2_MSG_KEXINIT terkirim
debug1: SSH2_MSG_KEXINIT diterima
debug1: kex: server-> client aes128-ctr hmac-md5 tidak ada
debug1: kex: client-> server aes128-ctr hmac-md5 tidak ada
debug1: mengirim SSH2_MSG_KEX_ECDH_INIT
debug1: mengharapkan SSH2_MSG_KEX_ECDH_REPLY
debug1: Kunci host server: RSA a6: 74: 33: 36: 95: 31: 6e: a6: d7: 71: 87: b8: 3c: 38c: e2: 60
debug1: Host 'droolit.unfuddle.com' dikenal dan cocok dengan kunci host RSA.
debug1: Ditemukan kunci di / Pengguna /akhkharu / .ssh/known_hosts:390
debug1: ssh_rsa_verify: signature benar
debug1: SSH2_MSG_NEWKEYS terkirim
debug1: mengharapkan SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS diterima
debug1: Roaming tidak diizinkan oleh server
debug1: SSH2_MSG_SERVICE_REQUEST terkirim
debug1: SSH2_MSG_SERVICE_ACCEPT diterima
debug1: Otentikasi yang dapat melanjutkan: publickey
debug1: Metode otentikasi berikutnya: publickey
debug1: Menawarkan kunci publik RSA: /Users/akhkharu/.ssh/id_rsa
debug1: Server menerima kunci: pkalg ssh-rsa blen 277
debug1: Otentikasi berhasil (publickey).
Diotentikasi untuk droolit.unfuddle.com ([174.129.5.196]: 22).
debug1: mengatur soket master multipleks
debug1: saluran 0: baru [/ms/git@droolit.unfuddle.com:22]
debug1: control_persist_detach: proses master latar belakang
debug1: forking ke latar belakang
debug1: Memasuki sesi interaktif.
debug1: koneksi kontrol multiplexing
debug1: saluran 1: baru [kontrol-mux]
debug1: saluran 2: baru [sesi klien]
debug1: Remote: Perintah paksa.
debug1: Remote: Penerusan port dinonaktifkan.
debug1: Remote: penerusan X11 dinonaktifkan.
debug1: Remote: Penerusan agen dinonaktifkan.
debug1: Remote: Alokasi Pty dinonaktifkan.
debug1: Remote: Perintah paksa.
debug1: Remote: Penerusan port dinonaktifkan.
debug1: Remote: penerusan X11 dinonaktifkan.
debug1: Remote: Penerusan agen dinonaktifkan.
debug1: Remote: Alokasi Pty dinonaktifkan.
debug1: mux_client_request_session: id sesi master: 2
Permintaan alokasi PTY gagal
Perlu SSH_ORIGINAL_COMMAND
debug1: client_input_channel_req: saluran 2 balasan status rtype 0
debug1: client_input_channel_req: saluran 2 rtype eow@openssh.com balasan 0
debug1: saluran 2: gratis: sesi klien, saluran 3
debug1: saluran 1: gratis: kontrol mux, saluran 2
Koneksi bersama ke droolit.unfuddle.com ditutup.
[andrey-mbp ~] $ ll / ms /
total 0
srw ------- 1 akhkharu admin 0B 17 Jul 11:55 git@droolit.unfuddle.com: 22

Terima kasih,
Andrey.

Jawaban:


19

*Bait tuan rumah Anda menangkapnya. Letakkan bait host yang lebih spesifik sebelumnya.


Terima kasih, tetapi itu tidak akan berhasil untuk saya. Saya perlu ControlMaster diaktifkan untuk semua host, tetapi tidak untuk unfuddle.com. Saya tidak bisa mendaftar semua host yang saya gunakan dalam file konfigurasi. Apa yang tampaknya berhasil adalah menempatkan aturan untuk unfuddle.com di awal.
Andrey Chernih

8
Maksud Anda ... ketika Anda menempatkan bait host yang lebih spesifik sebelumnya?
Ignacio Vazquez-Abrams

Ya, ini aneh, tetapi berhasil.
Andrey Chernih

Saya telah mencari halaman manual selama berabad-abad, tetapi ini adalah prioritas aneh!
JanKanis

1
Saya khawatir saya akan bertanya-tanya sampai hari kematian saya apakah Andrey mengetahui fakta bahwa jawaban ini benar, dan bahwa komentar yang dia setujui menunjukkan hal itu.
farlysuperiorman

10

Seperti dijelaskan dalam jawaban untuk pertanyaan serupa saya tentang SuperUser , Anda dapat menggunakan sintaks "bang" untuk mengecualikan host tertentu dari Host *bait asli , seperti ini:

Host * !*.unfuddle.com
    ControlPath /ms/%r@%h:%p
    ControlMaster auto
    ControlPersist 4h

Dalam situasi saya, saya menemukan bahwa urutan Hostbagian ketika menggunakan Host *tampaknya tidak relevan, tetapi metode di atas selalu berhasil.


5

Bagi saya itu bekerja ketika saya juga mengatur ControlPathuntuk nonedalam hostbait.

Anda dapat mencoba:

Host *.unfuddle.com   
    ControlMaster no
    ControlPath none

Maka tidak ada sesi kontrol yang akan dihasilkan.


Dalam kasus saya, saya harus melakukan ini dan meletakkan Host *bagian di akhir file dan berhasil.
a3nm
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.