jalankan su -c lewat ssh

10

Saya mencoba memeriksa versi BIOS dari server melalui SSH, sebuah perintah yang membutuhkan hak akses root:

ssh remote-server su -c dmidecode

tetapi ini tentu saja gagal dengan kesalahan:

standar dalam harus tty

Bagaimana saya membuat ini bekerja? Saya tidak dapat menggunakan sudo, dan ketika saya mencoba masuk sebagai root @ remote-server, itu tidak akan menerima kata sandi yang saya gunakan untuk perintah 'su'. Saya menggunakan RedHat Enterprise Linux 4.

Harun
sumber
Saya juga akan sarankan melihat ke menggunakan sudo bukan "su -c"
wfaulk
1
seperti yang saya sebutkan "Saya tidak bisa menggunakan sudo"
aaron
Saya ingin ada lebih banyak informasi tentang mengapa "Saya tidak bisa menggunakan sudo".
dannysauer
@dannysauer Tidak semua OS memilikinya. Saya di sini mencoba untuk memecahkan masalah yang sama, kecuali bahwa saya tidak di RedHat seperti OP. Saya menggunakan varian unix tanpa sudo. Saya ingin tahu mengapa OP tidak dapat menggunakannya di RedHat, tapi saya tetap bersyukur bahwa pertanyaannya telah diajukan.
Loduwijk
sudo dibangun di atas semua varian UNIX yang saya kenal, tapi saya akan setuju bahwa itu tidak diinstal (atau dikonfigurasi) pada mereka semua. Saya benar-benar lebih ingin tahu mengapa itu tidak dikonfigurasi di sana (saya pikir - sudah beberapa tahun). : D
dannysauer

Jawaban:

13

Gunakan -tuntuk memaksa ssh untuk mengalokasikan tty:

ssh -t -t remote-user su -c dmidecode

Anda mungkin juga mempertimbangkan untuk mengizinkan root untuk ssh secara langsung. Jika Anda menggunakan otentikasi kunci publik, ini mungkin lebih aman karena Anda tidak akan menyampaikan kata sandi. Jika Anda memutuskan untuk melakukan ini, pertimbangkan untuk memblokir login root dari mana saja kecuali alamat IP tepercaya Anda dengan memasukkan yang berikut ini /etc/security/access.conf:

+ : root : 10.20.30.40
- : root : ALL EXCEPT LOCAL

dan pastikan UsePAMtidak dinonaktifkan disshd_config

geocar
sumber
2
Adakah alasan Anda memasukkan dua -tdalam contoh Anda?
wfaulk
2
Menurut halaman manual, opsi multi-t "memaksa alokasi tty, bahkan jika ssh tidak memiliki tty lokal"
Heath
Ini tidak bekerja untuk saya di Fedora. Ini memungkinkan script untuk meminta saya untuk kata sandi saya, tetapi kata sandi saya ditampilkan sebagai plaintext, dan ketika saya menekan enter, itu hanya hang.
Cerin
@ Chris itu masalah yang berbeda. Coba ajukan pertanyaan baru.
geocar
@Heath terima kasih atas komentar tentang double -t, yang bekerja untuk saya di Centos
Paul Sheldrake
0

Tidak bisakah Anda masuk ke server jauh sebagai pengguna standar dan kemudian menggunakan sudo ?

Anda juga dapat mencoba mengutip perintah yang akan dieksekusi oleh ssh, seperti pada

ssh remote-server 'su -c dmidecode'

atau

ssh remote-server "su -c dmidecode"
Massimo
sumber
3
-1 karena mengutip perintah tidak akan menyelesaikan kekurangan terminalnya. +1 untuk menyarankan sudo. Ini tempat cuci.
wfaulk
seperti yang saya sebutkan "Saya tidak bisa menggunakan sudo"
aaron