Dalam hal itu penting:
- OS: Ubuntu 10.04
- SSH: OpenSSH_5.3p1 Debian-3ubuntu5
Saya ingin satu file konfigurasi SSH untuk memasukkan yang lain. Kasus penggunaannya adalah untuk menentukan apa pun yang saya inginkan dalam .ssh/config
file default saya dan kemudian menunggu beberapa hal tambahan dalam file terpisah (misalnya ~/.ssh/foo.config
). Saya ingin file kedua untuk menggabungkan yang pertama, jadi saya tidak perlu menduplikasi semuanya di yang pertama. Apakah itu bisa dilakukan? Terima kasih!
Jawaban:
Dari 7.3p1 ke atas, ada
Include
kata kunci, yang memungkinkan Anda untuk memasukkan file konfigurasi.Misalnya Anda dapat memiliki di
~/.ssh/config
:dan di
~/.ssh/config.d/home
:Dari komentar, gunakan di bawah ini untuk memasukkan semua file dalam
config.d
direktori:sumber
Include config.d/*
untuk memasukkan semua entri dalamconfig.d
.Host
entri.Tidak, setahu saya ini tidak mungkin.
Berikut ini tautan ke permintaan fitur terbuka / tiket bug:
https://bugzilla.mindrot.org/show_bug.cgi?id=1585
https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/739495
sumber
Slightly modified patch applied, this will be in openssh-7.3
Jika Anda ingin memulai klien ssh, Anda bisa melakukan ini di bash:
maka Anda menggunakan ssh secara normal dan kedua file akan dibaca dalam urutan itu.
Untuk daemon server
sshd
Anda dapat melakukan hal yang sama, gunakan saja-f
alih-alih-F
dan tulis ini di mana Anda memulai daemon secara langsung. Anda tidak perlu alias.Kemungkinan kedua menurut halaman manual adalah untuk menempatkan konfigurasi sistem yang lebar
/etc/ssh/ssh_config
dan yang di pengguna~/.ssh/config
.Pembaruan Rupanya ada beberapa masalah dengan beberapa versi bash dan bagaimana perangkat dibuat. (lihat http://bugs.alpinelinux.org/issues/1465 )
Ini adalah solusi (meskipun menurut saya jelek):
jadi jika Anda mau, Anda dapat membuat fungsi darinya (atau skrip):
sumber
~/.ssh/config
, 3./etc/ssh/ssh_config
, Anda tidak perlu meneruskan~/.ssh/config
baris perintah juga. Adilalias ssh='ssh -F ~/.ssh/foo.config'
dan~/.ssh/config
harus dijemput setelah itu. Selama Anda tidak keberatanfoo.config
dimuat pertama yang harus lebih bersih daripada solusi di atas.Dimulai dengan ssh 7.3 (dirilis pada 1 Agustus 2016),
Include
arahan tersedia.(Berikut ini tautan ke laporan bug yang diselesaikan, yang juga mencakup tambalan: https://bugzilla.mindrot.org/show_bug.cgi?id=1585#c24 )
sumber
Demikian pula dengan yang lain 'jelek' di sini milikku satu-liner:
sumber
sftp
perintah tidak akan memicu perhitungan ulang konfigurasi.Yah, saya agak curang untuk melakukan ini. Dalam file .profile-ish bash saya, saya memiliki blok yang menggantikan berbagai bagian dari direktori home saya saat login, jadi saya hanya membuat yang baru setiap kali. Contoh:
Ini juga memungkinkan saya melakukan hal-hal seperti menambahkan blok konfigurasi ke file konfigurasi ssh hanya jika saya menggunakan host A atau B, tetapi tidak pada sistem rumah saya.
Sekarang saya tahu, seseorang akan mengeluh bahwa jika Anda login banyak ini dapat menyebabkan perlambatan yang berlebihan, tetapi dalam praktiknya saya tidak pernah benar-benar menyadarinya. Dan saya yakin Anda bisa memasukkan ini ke dalam skrip dan menjalankannya melalui cron juga.
sumber
Saya pribadi menggunakan perintah-perintah itu untuk mengkompilasi ssh config:
atau:
karena:
tidak bekerja untuk saya, kembali:
Semoga ini bisa membantu.
sumber
Solusi lain berbasis FUSE (tidak menguji sendiri):
https://github.com/markhellewell/sshconfigfs
"Daripada harus terus mengelola satu file besar, [...] bukannya membangun" file "konfigurasi secara dinamis dari banyak potongan logis yang lebih kecil."
Saya juga menemukan artikel yang melakukan ini melalui FIFOs: http://www.linuxsysadmintutorials.com/multiple-ssh-client-configuration-files/
sumber
Tidak ada solusi alias ini yang berfungsi untuk
git
atau program lain selainssh
.Saya telah menampar bersama yang cepat dan kotor, tetapi Anda mungkin ingin memperbaikinya.
Tambahkan ini ke
~/.bashrc
Setiap kali Anda memulai sesi, itu akan menggabungkan semua file
~/.ssh/config.d
. (baris 3)Kelemahan dari versi ini adalah bahwa jika Anda mengubah
~/.ssh/config
sesi berikutnya Anda membuka perubahan Anda akan hilang, jadi untuk mencegah saya memindahkan file yang ada ke file .bak. (baris 2) Masalahnya adalah Anda akan memiliki banyak file .bak setelah beberapa saat.sumber
is_anything_changed
kondisiAnda dapat dengan mudah memutakhirkan versi SSH di Ubuntu ke v7.3 (diuji pada Ubuntu Xenial 16.04) dengan menginstal paket dari Yakkety:
Periksa versi SSH
Konfigurasikan SSH untuk digunakan termasuk dari direktori ~ / .ssh / config.d
sumber
Jawaban bodoh saya:
Jadi saya setuju untuk ini:
~/.ssh/config.d/
cat ~/.ssh/config.d/* > ~/.ssh/config
Include config.d/*
sumber
Saya tidak bisa memutakhirkan SSH di komputer saya juga.
Saya menggunakan GNU make untuk menghasilkan file konfigurasi ssh hanya bila diperlukan :
Kemudian ssh alias
Itu bekerja seperti pesona.
sumber