Hentikan ssh config pada pertandingan pertama

18

Saya telah menambahkan proxy lokal untuk semua host saya di .ssh config saya, namun saya ingin masuk ke vm lokal saya tanpa perintah proxy. Output dari usaha ssh saya:

debug1: /Users/bbarbour/.ssh/config line 1: Applying options for local.dev
debug1: /Users/bbarbour/.ssh/config line 65: Applying options for *

Dengan konfigurasi ssh berikut, bagaimana cara mencegah ProxyCommand diterapkan ke entri local.dev?

Host local.dev
    HostName dev.myserver.com
    User developer
...
Host *
    ProxyCommand /usr/local/bin/corkscrew 127.0.0.1 8840 %h %p
RUU Boiler
sumber

Jawaban:

22

Anda dapat mengecualikan local.dev dari ProxyCommand, menggunakan !sebelumnya:

Host * !local.dev
    ProxyCommand /usr/local/bin/corkscrew 127.0.0.1 8840 %h %p

Dari dokumentasi ssh_config :

Jika lebih dari satu pola disediakan, mereka harus dipisahkan oleh spasi putih.

Entri pola dapat dinegasikan dengan membuatnya awalan dengan tanda seru (`! ') . Jika entri yang dinegasikan cocok, maka entri Host diabaikan, terlepas dari apakah ada pola lain di baris yang cocok. Karenanya, pertandingan yang dinegasikan berguna untuk memberikan pengecualian untuk pertandingan wildcard.

Dokumentasi juga mengatakan:

Untuk setiap parameter, nilai yang diperoleh pertama akan digunakan . File konfigurasi berisi bagian-bagian yang dipisahkan oleh spesifikasi `Host ', dan bagian itu hanya diterapkan untuk host yang cocok dengan salah satu pola yang diberikan dalam spesifikasi. Nama host yang cocok adalah yang diberikan pada baris perintah.

Jadi, Anda juga dapat menonaktifkan ProxyCommand untuk local.dev dengan mengabaikan nilai yang telah Anda tetapkan di Host *:

Host local.dev
    HostName dev.myserver.com
    User developer
    ProxyCommand none
cuonglm
sumber
8

Opsi dalam file konfigurasi diterapkan saat pertama kali cocok. Karena Anda tidak memiliki ProxyCommand di entri host, yang di *entri Anda akan digunakan.

Ada dua cara untuk menyiasatinya:

  • Untuk host di mana Anda tidak ingin menggunakan perintah proxy, cukup tambahkan baris
    ProxyCommand tidak ada
  • Untuk *entri, catat secara spesifik bahwa entri tidak boleh berlaku untuk host local.devdengan meniadakannya dengan a!
    Tuan rumah! Local.dev *
Jenny D
sumber
untuk memisahkan beberapa host gunakan ruang. koma (,) tidak bekerja untuk saya. ID Distributor: Ubuntu Keterangan: Ubuntu 17.10 Rilis: 17.10 Nama kode: artful
Aruna
Terima kasih @ArunaFromLK - Saya tidak percaya saya melewatkannya, dan tidak ada orang lain yang melihatnya dalam 3,5 tahun! Saya sudah memperbarui jawabannya sekarang.
Jenny D