Regexp dalam .ssh / config


12

Di tempat kerja, saya sering harus masuk ke host yang mengikuti skema penamaan yang umum, misalnya qc01- qc12, hc01- hc10, dan seterusnya. Semua ini perlu untuk mendapatkan nilai konfigurasi yang sama di laptop saya .ssh/config. Tentu saja, saya bisa menggunakan entri untuk host qc*dan hc*, tapi saya bertanya-tanya apakah sebaliknya mungkin menggunakan ekspresi reguler?

Jawaban:




1

Anda dapat menggunakan ekspresi reguler penuh di ssh_config.

Dokumentasi yang relevan adalah IMO yang sangat sulit dibaca dan dipahami. Saya hanya memahaminya karena saya memiliki 13+ tahun pengalaman Linux dan dan 8+ tahun menggunakan ssh. Jadi inilah ringkasan dokumentasi saya:

  • man ssh_config menjelaskan fitur yang disebut Match
  • lalu ada fitur yang disebut execyang memungkinkan Anda menggunakan perintah shell arbitrer untuk menentukan kecocokan
  • meneruskan parameter input ke perintah shell arbitrary adalah mungkin dan dijelaskan di bagian yang berlabel TOKENS

Dalam kasus saya, saya akhirnya menggunakan di~/.ssh/config :

Match exec "echo %h | grep -q 'NAME[0-9]\+$'"
    User USER
    IdentityFile /path/to/identity/file
    Hostname %h.fully.qualified.domain.name

Pengujian harus dilakukan dengan sesuatu yang rumit seperti ini. Dan untuk melakukan pengujian itu Anda menelepon ssh -vvv HOSTNAME. Yang akan menunjukkan dengan tepat apa yang terjadi, dan apakah baru Anda Matchditerapkan dengan benar.


0

Memperluas jawaban dari Trevor:

Host yang lebih kompleks juga dimungkinkan, seperti mencocokkan foo123.123dan foo10.10dalam satu aturan TANPA memiliki entri DNS untuk nama host yang digunakan:

Match exec "echo %h | grep -q 'foo[0-9]\+.[0-9]\+$'"
    Port 1234 # just to show it can be paired with non-default ports too,
              # see %p in man ssh_config
    ProxyCommand /usr/bin/nc 10.10.$(echo %h | sed -e 's/foo//') %p

Menggunakan ProxyCommand untuk memanipulasi konten% h dengan shell dan menghubungkan ke port yang tepat melalui netcat. Dengan cara ini Anda dapat membuat preset untuk kategori host, tanpa membuat entri individual.

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.