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.