Saya telah menemukan bahwa dengan perusahaan baru saya bekerja dengan saya sering harus server akses linux dengan masa hidup yang relatif singkat. Pada masing-masing server ini saya memiliki akun, tetapi setiap kali ada yang baru dibuat, saya harus melalui kerumitan mentransfer melalui .bashrc saya. Ini mungkin Namun bahwa pada sekitar waktu bulan bahwa server tidak akan ada lagi. Saya juga harus mengakses banyak server lain untuk waktu yang singkat (menit) di mana tidak layak untuk mentransfer melalui .bashrc saya, tetapi karena saya bekerja pada banyak server, ini menambah banyak waktu yang terbuang.
Saya tidak ingin mengubah apa pun di server, tetapi saya bertanya-tanya apakah ada cara untuk memiliki "per-koneksi" .bashrc, jadi setiap kali saya ingin SSH ke server, pengaturan saya akan digunakan untuk sesi itu.
Jika ini memungkinkan, alangkah baiknya jika saya dapat melakukan hal yang sama dengan file konfigurasi lainnya, seperti file gitconfig.
sumber
Jawaban:
Saya pikir yang Anda inginkan adalah (di .ssh / config pada mesin yang Anda hubungkan):
maka Anda dapat memimpin dengan:
dan berada di jalan gembira Anda. LocalCommand mengeksekusi perintah pada server yang Anda hubungkan ketika sampai di sana, tepat sebelum sesi Anda yang sebenarnya.
Saya juga akan memastikan sshds di server dikonfigurasi dengan
PermitLocalCommand yes
Ada banyak cara Anda dapat men-tweak bahwa LocalCommand untuk membuatnya bekerja di lingkungan spesifik Anda - Anda dapat meringkuk dari server web internal, atau menarik dari mount nfs misalnya.
sumber
; source /path/to/.bashrc
setelah perintah scp agar bersumber secara otomatis. Akhirnya, negatif yang tidak terlalu penting dari metode ini adalah saya harus mengetikkan kata sandi dua kali. Tetapi pada akhirnya itu berhasil, jadi terima kasih.source /path/to/.bashrc
akan dieksekusi pada mesin yang Anda hubungkan. Perintah diLocalCommand
tidak memiliki akses ke sesi ssh.Saya pikir sshrc adalah apa yang Anda cari: https://github.com/Russell91/sshrc
Anda dapat menggunakan ini untuk mengatur variabel lingkungan, menentukan fungsi, dan menjalankan perintah post-login. Sesederhana itu, dan itu tidak akan berdampak pada pengguna lain di server - bahkan jika mereka menggunakan sshrc juga. Untuk konfigurasi lebih lanjut, lanjutkan membaca.
sumber
Jika Anda belum pernah menekan server sebelumnya, tidak akan ada entri di ~ / .ssh / known_hosts untuk itu.
Anda dapat mencari host yang dikenal dengan "ssh-keygen -F", tetapi Anda harus menguji output tersebut (grep) karena ssh-keygen tidak mengembalikan false jika ada yang terlewatkan. Perhatikan bahwa jika Anda merujuk ke suatu host oleh pengidentifikasi yang berbeda (alamat IP, nama host, FQDN), masing-masing diperlakukan sebagai instance yang terpisah.
Anda bisa menulis pembungkus untuk ssh yang mentransfer lingkungan pengguna Anda ke host itu pada login pertama:
ssh-newenv () {if! ssh-keygen -F $ 1 | grep -q "^ # host $ 1 ditemukan:"; kemudian rsync ~ / .bashrc ~ / .bash_profile ~ / .bash_logout $ 1:.; fi; ssh $ 1; }
Jika Anda ingin membuat ini lebih kuat, Anda bisa memeriksa keberadaan file lingkungan yang dikenal, hash, atau penanda lain pada host jarak jauh.
sumber
Saya tidak tahu apakah ada per sesi .bashrc.
Solusi lain adalah dengan menulis skrip kecil yang mentransfer semua konfigurasi favorit Anda ke folder rumah baru Anda.
Mungkin hanya membuat folder dengan semua konfigurasi Anda dengan path dan hanya mentransfernya dengan scp
seperti
dan kemudian a
Itu menghemat waktu.
sumber
Saya tidak berpikir itu mungkin, mengingat ssh tidak ada hubungannya dengan Anda
.bashrc
. Ini adalah shell yang memuat file itu, bukan ssh.Beberapa ide:
SendEnv
opsi (lihatssh_config
halaman manual untuk informasi lebih lanjut). Jika server diatur dengan benar (mis. Server memiliki cukupAcceptEnv
di sshd_config), Anda dapat menggunakanSendEnv
untuk menyalin variabel lingkungan Anda ke host jarak jauh.ProxyCommand
pengaturan secara keliru (lihatssh_config
halaman manual) untuk mengirim.bashrc
file Anda atau lainnya sebelum menghubungkan ke host jarak jauh. Itu akan membutuhkan beberapa pengujian. Juga, bersiaplah bahwa ini dapat mengganggu scp.sumber
Saya pikir https://github.com/fsquillace/pearl-ssh melakukan apa yang Anda butuhkan.
Saya menulisnya sejak lama sebelum sshrc lahir dan memiliki lebih banyak manfaat dibandingkan dengan sshrc:
Contohnya:
sumber