GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara membuat Shared Keys .ssh/authorized_keys dan sudo bekerja sama?

Apa yang ingin Anda lakukan adalah mungkin tetapi akan membutuhkan beberapa pengalaman karena Anda harus mengkompilasi modul PAM yang disebut pam-ssh-agent-auth .

Prosesnya cukup sederhana:

$ sudo aptitude install libssl-dev libpam0g-dev build-essential checkinstall
$ wget "http://downloads.sourceforge.net/project/pamsshagentauth/pam_ssh_agent_auth/v0.9.3/pam_ssh_agent_auth-0.9.3.tar.bz2"
$ tar -xjvf pam_ssh_agent_auth-0.9.3.tar.bz2
$ cd pam_ssh_agent_auth-0.9.3

$ ./configure --libexecdir=/lib/security --with-mantype=man

$ make
$ sudo checkinstall

Edit konfigurasi sudo:

$ sudo visudo

Tambahkan berikut ini:

Defaults env_keep += SSH_AUTH_SOCK

Lanjutkan dengan mengubah pengaturan sudo PAM:

$ sudo vi /etc/pam.d/sudo

Tambahkan (tepat di atas baris @include):

**auth [success=2 default=ignore] pam_ssh_agent_auth.so file=~/.ssh/authorized_keys**
@include common-auth
@include common-account

ssh dan sudo tidak ada hubungannya satu sama lain. Menyiapkan ssh metode autentikasi tidak akan melakukan apa pun untuk sudo . sudo tidak akan memahami ssh sandi.

passwd -l dimaksudkan untuk mengunci akun pengguna, sehingga dia tidak dapat lagi mengautentikasi dengan kata sandi. Itu kebalikan dari yang Anda inginkan, yaitu membiarkan pengguna mengautentikasi tanpa kata sandi.

Saya pikir yang Anda inginkan adalah NOPASSWD di sudoers Anda berkas.

(PS, tidak ada alasan untuk menjalankan cd perintah dengan sudo . cd tidak menyebar ke proses induk, jadi segera setelah sudo keluar, Anda kembali ke tempat Anda memulai.)

Edit: Anda terus mengatakan bahwa Anda ingin mengunci kata sandi akun dan ingin sudo memahami kunci publik/pribadi. Maaf, sudo tidak akan menggunakan kunci ssh. Itu bukan ssh. Jika Anda tidak ingin pengguna dapat masuk dengan kata sandinya, menurut saya jawabannya adalah menonaktifkan otentikasi kata sandi ssh, bukan mengunci akun. Kemudian Anda dapat mempertahankan kata sandi untuk pengguna, yang dapat mereka gunakan untuk sudo setelah mereka masuk melalui ssh authorized_keys.


Jawaban Andre de Miranda memberikan solusi yang bagus menggunakan pam_ssh_agent_auth, tetapi sebagian sudah usang. Khususnya /etc/pam.d/sudo instruksi saat menggunakan banyak versi Linux saat ini.

Jika Anda menjalankan Ubuntu 12.04 dengan tepat, saya sebenarnya telah menyederhanakan prosesnya dengan menyediakan build pam_ssh_agent_auth dari ppa:ppa:cpick/pam-ssh-agent-auth.

Anda dapat menginstal paket dengan menjalankan:

sudo add-apt-repository ppa:cpick/pam-ssh-agent-auth
sudo apt-get install pam-ssh-agent-auth

Setelah penginstalan, jika Anda ingin menggunakan modul PAM ini dengan sudo, Anda harus mengonfigurasi pengaturan sudo dan konfigurasi PAM, tepatnya di Ubuntu 12.04 Anda dapat melakukannya dengan membuat dua file berikut:

/etc/sudoers.d/pam-ssh-agent-auth :

Defaults    env_keep+="SSH_AUTH_SOCK"

/etc/pam.d/sudo :

ent#%PAM-1.0

auth       required   pam_env.so readenv=1 user_readenv=0
auth       required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
auth       sufficient pam_ssh_agent_auth.so file=/etc/security/authorized_keys
@include common-auth
@include common-account
@include common-session-noninteractive

Jika Anda menggunakan chef, proses di atas dapat diotomatiskan dengan buku resep saya, yang dapat ditemukan di salah satu dari dua lokasi berikut:
https://github.com/cpick/pam-ssh-agent-auth
http://community.opscode.com/cookbooks/pam-ssh-agent-auth.

files buku resep direktori berisi /etc/pam.d/sudo dan /etc/sudoers.d/pam-ssh-agent-auth file yang dijelaskan di atas yang berfungsi persis dengan Ubuntu 12.04 dan seharusnya menjadi titik awal yang membantu saat menggunakan versi/distro lain.


Linux
  1. Apa itu Server Web, dan Bagaimana Cara Kerja Server Web?

  2. Cara Mengatur Kunci SSH

  3. Bagaimana Mengizinkan SFTP dan melarang SSH?

  1. Bagaimana Internal Sudo Bekerja?

  2. Bagaimana Membuat Direktori Bersama Dapat Diakses Oleh Sftp?

  3. Ssh – Bagaimana Tcp-keepalive Bekerja Di Ssh?

  1. Cara Mengatur Kunci SSH di Debian

  2. Bagaimana cara membuat dan menerapkan tambalan SVN?

  3. Mendapatkan sudo dan nohup untuk bekerja bersama