Dengan skenario:
- Mesin jarak jauh : server SSH; pengguna tidak memiliki hak admin;
- Mesin lokal : klien SSH; pengguna memiliki hak admin.
Jika pengguna , masuk ke remote dari lokal , ingin berinteraksi dengan remote menggunakan shell yang tidak diinstal pada remote , bagaimana pengguna bisa melakukannya sendiri?
Contoh: pengguna menggunakan ikan di lokal , dan ingin juga menggunakannya di jarak jauh , tetapi jarak jauh hanya memiliki bash dan zsh yang diinstal.
shell
ssh
not-root-user
sampablokuper
sumber
sumber
Jawaban:
Pasang cangkang favorit Anda pada mesin jarak jauh. Anda tidak memerlukan hak administrator untuk melakukan itu, Anda dapat menginstal program di direktori home Anda, hanya saja kurang nyaman. Lihat Instalasi pada debian 5 32-bit tanpa menjadi root , Bagaimana cara menginstal program secara lokal tanpa hak akses sudo? , Melacak program dan pertanyaan lain .
Jika Anda ingin secara otomatis login ke shell yang Anda instal sendiri daripada yang default, lihat Membuat shell default zsh tanpa akses root
Jika semua yang ingin Anda lakukan adalah memanipulasi file jarak jauh, Anda dapat menggunakan SSHFS untuk memasang pohon direktori jarak jauh pada mesin lokal Anda.
Jika Anda tidak memiliki ruang di direktori home Anda atau itu adalah akun bersama, Anda dapat melakukan pengaturan terowongan SSH terbalik dan me-mount pohon direktori lokal Anda pada mesin jarak jauh dengan SSHFS , dengan asumsi bahwa kedua mesin menjalankan arsitektur yang sama ( varian unix yang sama pada tipe prosesor yang sama). Jika kedua mesin memiliki arsitektur yang tidak kompatibel, Anda bahkan dapat menginstal program untuk arsitektur jarak jauh di direktori home Anda. Ini mungkin tidak nyaman karena Anda harus mengatur jalur dengan benar agar program dapat menemukan pustaka, file konfigurasi, dan file data lainnya.
Emacs ini eshell kompatibel dengan Tramp : jika Anda mengubah ke direktori terpencil di Eshell, Anda akan mengeksekusi perintah pada mesin remote.
sumber
Jawaban sederhana: Tidak, Anda tidak dapat menggunakan pada kotak jauh program yang tidak diinstal pada kotak jauh.
Penanganan masalah: Anda tidak perlu hak admin untuk menginstal shell pada sistem jarak jauh. Anda dapat menginstalnya di direktori home Anda, tetapi mungkin Anda harus mengompilasinya dari sumber. Biasanya menggunakan sesuatu seperti
configure --prefix=${HOME}/local
Catatan terakhir: Anda tidak dapat mengubah shell default Anda menjadi yang non "resmi" (lihat
/etc/shells
) tetapi Anda dapat memasukkan sesuatu sepertiexec fish
di.bashrc
sumber
Pengguna dapat menggunakan sshfs untuk memasang remote $ HOME-nya di mesin lokalnya. Dalam skenario seperti itu, pengguna tidak akan menggunakan cangkang pilihannya pada mesin jarak jauh secara langsung tetapi, tetap, lebih baik daripada tidak sama sekali.
sumber
Pendekatan dasar adalah menyalin shell yang dapat dieksekusi ke remote host menggunakan
scp
kemudian jalankan dengan menggunakanssh
, misalnyaThe
-t
diperlukan agarssh
mengalokasikan sebuah tty, yang tidak akan melakukan secara default ketika menjalankan perintah remote.Ini mengasumsikan host jarak jauh Anda menjalankan sistem operasi yang sama. Jika tidak, Anda ingin mengetahui sistem operasi jarak jauh, dan kompilasi biner (mungkin statis) yang dapat Anda salin.
sumber
Jawaban yang jelas, "instal perintah pada mesin jarak jauh", adalah solusi yang paling bersih, jadi kita tidak boleh mengabaikannya:
Jika ini memungkinkan untuk menginstal perintah sebagai root, misalnya dengan
sudo apt-get install fish
,perintah dapat dijalankan seperti ini:
ssh remote -t fish
Pertanyaannya adalah tentang apa yang harus dilakukan ketika kita tidak dapat menginstal perintah pada komputer jarak jauh.
Atau lebih spesifik, ini tentang kasus kita tidak dapat menginstal perintah sebagai root .
Itu tidak berarti kita tidak dapat menginstal sama sekali!
Apa yang masih mungkin adalah menginstal perintah di dalam direktori home dengan membangunnya dari sumber .
Ini memiliki keuntungan karena menangani semua file dukungan terkait yang mungkin datang dengan perintah, dan bagaimana program menemukan mereka. Dalam
fish
contoh shell, ini adalah fungsi penyelesaian dll, semua tidak tersedia jika kita hanya menyalinfish
biner.Membangun perintah dari sumber membutuhkan alat pengembangan dan file pengembangan dari perpustakaan yang digunakan, yang mungkin terlalu rumit.
Tetapi banyak program datang dengan semua yang mereka butuhkan dibundel dalam sumber, sehingga mungkin mudah. Sulit dikatakan sebelumnya, tetapi orang bisa mencoba.
Untuk menginstal perintah ke direktori home,
configure
disediakan jalur untuk menginstal - yang perlu diperiksa dalam instruksi build. Misalnya:Catatan itu tidak
sudo make install
seperti biasa - seperti itu adalah seluruh titik menginstal secara lokal untuk tidak perlu sudo di sini.Untuk informasi umum tentang menginstal program dari sumber, lihat askubuntu.SE: Bagaimana cara saya menginstal file .tar.gz (atau .tar.bz2)?
sumber
Saya tidak berpikir Anda dapat menjalankan shell yang ada di satu mesin di yang lain. Satu-satunya cara untuk menjalankannya pada mesin jarak jauh adalah menginstalnya.
sumber