Bagaimana cara saya sebagai pengguna normal tanpa kata sandi?

1

Saya bertanya-tanya apakah seseorang dapat membantu saya dengan skrip saya.

Saya punya 2 server. Mari kita sebut mereka Server A dan Server B. Server B memiliki perangkat lunak yang diinstal di atasnya yang ingin saya jalankan dari Server A. Saya tidak dapat menginstal perangkat lunak di Server A.

Saya harus membiarkan pengguna menjalankan perangkat lunak lain di Server A yang kemudian akan memanggil skrip untuk memanggil perangkat lunak di Server B untuk menjalankan perintah.

Jadi saya membuat pengguna yang disebut transfer pada server A dan server B. Saya mengizinkan transfer untuk dapat ssh ke server B tanpa perlu kata sandi menggunakan kunci otentikasi.

Jadi sekarang dari Server A saya mencoba su sebagai transfer, ssh ke Server B dan jalankan perintah.

Ini berfungsi dengan baik sebagai root. Namun, ketika saya sendiri atau pengguna lain, itu meminta saya untuk kata sandi untuk pengguna "transfer" di Server B.

Berikut adalah urutan perintah:

 #!/bin/bash
 su transfer -c 'ssh transfer@ServerB script $1 $2' 
John Blahson
sumber
Itu tidak meminta kata sandi pada B; sudari nonroot memerlukan kata sandi dari pengguna baru di mana ia berjalan , yaitu A, karena Unix dirancang sebagai sistem multiuser. Coba su transfer -c 'echo hi'lihat ini. Anda dapat menggunakan sudountuk mengizinkan pengguna terpilih untuk menjalankan ini sshpada A, atau Anda bisa memberikan pengguna tertentu pada A privatekey yang memungkinkan mereka untuk menggunakan sshuntuk mengakses B sebagai transfer.tanpa memiliki transferpengguna di A sama sekali.
dave_thompson_085

Jawaban:

1

Buat skrip shell yang menjalankan perintah jarak jauh:

% cat > /home/transfer/exec-remote-sw <<EOF
#!/bin/bash
ssh transfer@ServerB script $1 $2
EOF
% chmod 755 /home/transfer/exec-remote-sw

Uji skrip ini dengan menjalankannya sebagai transferpengguna:

% /home/transfer/exec-remote-sw  arg1  arg2

Sekarang sebagai root, buat grup Linux (mis. transfer) Lalu tambahkan semua pengguna yang membutuhkan akses ke fungsi ini ke dalam grup Unix:

% groupadd transfer
% usermod -a -G transfer login1
% usermod -a -G transfer login2
...
% usermod -a -G transfer loginN

Sebagai root, tambahkan berikut ini ke /etc/sudoersfile dengan menjalankan visudo:

%transfer   serverA = (transfer) NOPASSWD: /home/transfer/exec-remote-sw

Uji dengan masuk sebagai salah satu pengguna di grup transfer dan jalankan:

% sudo -u transfer /home/transfer/exec-remote-sw  arg1  arg2

Untuk menyederhanakan ini untuk pengguna Anda, minta mereka menambahkan yang berikut ke file profil mereka (atau menambahkannya ke / etc / profile untuk semua orang):

alias svrbexec="sudo -u transfer /home/transfer/exec-remote-sw"

Kemudian pengguna dapat mengetik:

% svrbexec  arg1  arg2

dan proses jarak jauh harus dieksekusi dengan dua parameter mereka dilewati.

GLRoman
sumber