GNU/Linux >> Belajar Linux >  >> Linux

memuat alias shell lokal ke sesi ssh secara dinamis

Anda dapat menyalin sementara .bashrc Anda ke mesin jarak jauh Anda dengan nama lain. Misalnya menggunakan .bashrc_temp :

[email protected]$ scp .bashrc [email protected]:~/.bashrc_temp

Setelah itu Anda dapat masuk ke mesin jarak jauh:

[email protected]$ ssh [email protected]

dan source file .bashrc_temp :

[email protected]$ source ~/.bashrc_temp

Sekarang Anda dapat menggunakan .bashrc Anda dan fungsi Anda. Setelah selesai dengan pekerjaan Anda, Anda dapat menghapus file ~/.bashrc_temp di mesin jarak jauh dan keluar.

Penyalinan file dan login ke mesin jarak jauh dapat dilakukan dengan fungsi bash:

# copy the .bashrc to the remote machine 
# and log into the remote machine.
# parameter $1: [email protected]
function s() {
  scp ~/.bashrc $1:~/.bashrc_temp
  ssh $1
}

Perbarui :

Anda juga dapat mempertimbangkan untuk menyalin .bashrc ke /tmp pada mesin jarak jauh Anda dan sumber /tmp/.bashrc_temp .

Perbarui 2 :

Anda dapat masuk ke mesin jarak jauh dengan menggunakan ssh -t. Ini secara otomatis akan menggunakan temp .bashrc Anda . Fungsi yang diperbarui s() :

function s() {
  scp ~/.bashrc $1:/tmp/.bashrc_temp
  ssh -t $1 "bash --rcfile /tmp/.bashrc_temp ; rm /tmp/.bashrc_temp"
}

jens-na memberikan jawaban yang sangat bagus. Saya menghabiskan sedikit waktu dan mengerjakannya kembali sedikit untuk bekerja sedikit lebih baik. Dengan cara ini, Anda dapat meneruskan parameter apa pun ke SSH, seperti nomor port. Perbedaannya adalah menggunakan ssh perintah untuk mengunggah .bashrc file, bukan scp , yang menggunakan nama parameter perintah yang berbeda.

Anda juga akan melihat bahwa file yang berbeda diunggah, .bashrc_remote , sehingga Anda dapat memilih dengan tepat apa yang ingin Anda jadikan sumber di server jarak jauh, alih-alih semuanya

sshs() {
        ssh [email protected] "cat > /tmp/.bashrc_temp" < ~/.bashrc_remote
        ssh -t [email protected] "bash --rcfile /tmp/.bashrc_temp ; rm /tmp/.bashrc_temp"
}

Jalankan sebagai berikut:

sshs [email protected]

Nama 'sshs ' adalah untuk "Sumber SSH". Gunakan ssh ketika Anda tidak ingin sumber, dan gunakan sshs ketika Anda melakukannya.

https://Gist.github.com/jonahbron/5549848


Saya pikir sshrc adalah yang Anda cari:https://github.com/Russell91/sshrc

sshrc berfungsi seperti ssh, tetapi juga sumber ~/.sshrc setelah masuk dari jarak jauh.

$ echo "echo welcome" > ~/.sshrc
$ sshrc [email protected]
welcome

$ echo "alias ..='cd ..'" > ~/.sshrc
$ sshrc [email protected]
$ type ..
.. is aliased to `cd ..'

Anda dapat menggunakan ini untuk mengatur variabel lingkungan, menentukan fungsi, dan menjalankan perintah pasca-login. Sesederhana itu, dan tidak akan memengaruhi pengguna lain di server - meskipun mereka juga menggunakan sshrc. Untuk konfigurasi lebih lanjut, lanjutkan membaca.


Linux
  1. Temukan alamat IP klien dalam sesi SSH

  2. Cara mengirim data ke clipboard lokal dari sesi SSH jarak jauh

  3. linux mengeksekusi perintah dari jarak jauh

  1. Alias ​​baris perintah di Linux Shell

  2. Ssh – Membatasi Pengguna Ssh/scp/sftp ke Direktori?

  3. SSH tanpa sumber .bashrc

  1. Bagaimana Mendeteksi Jika Shell Dikendalikan Dari Ssh?

  2. Proses Dalam Sesi Dalam Shell Interaktif Vs Dalam Skrip?

  3. Cara menggunakan alias shell di Linux