2013-06-12 12 views
8

Próbowałem użyć klawiszy ssh, aby móc przełączać się z jednego użytkownika na drugiego na tej samej maszynie/serwerze Linux przy użyciu sudo su - username.Przełączanie użytkownika za pomocą "sudo su - username" przy użyciu kluczy SSH

Co chcę zrobić, to: Mam kilka kont na jednym serwerze. Chcę zablokować te konta passwd -l username, i umożliwić dostęp tylko z kluczy SSH, przez ssh-ing od jednego użytkownika do drugiego na tym samym komputerze, np: [[email protected]]$ ssh [email protected]

Zrobiłem to przez skopiowanie klucza publicznego z user1 do pliku z user2 i działa dobrze.

Ale inne rzeczy, które chciałbym zrobić, to móc sudo su - user2 z user1, używając klawiszy ssh, więc mogę uniknąć monitowania hasła.

np [[email protected]]$ sudo su - user2

Mam zmodyfikowany plik sshd_config, odkomentowane pola:

RSAAuthentication yes 
PubkeyAuthentication yes 
AuthorizedKeysFile .ssh/authorized_keys 
PasswordAuthentication no 

ale nadal nie jestem w stanie to zrobić.

Próbowałem także tego, co znalazłem w Internecie w związku z przekazywaniem agentów, ale nic.

Czy ktoś może mi pomóc, jak to zrobić, lub wskazać mi właściwy kierunek?

+0

'sudo' nie wiedzą nic na temat, ani nie dbają o' klucze ssh'. Są to zupełnie różne rzeczy. Aby uzyskać hasło 'sudo' działające bez hasła, musisz poprawnie skonfigurować' sudo'. – twalberg

Odpowiedz

4

sudo nie ma nic wspólnego z konfiguracją SSH i sshd.

Co naprawdę chcesz, to moduł PAM, który będzie używał kluczy publicznych SSH. Nie jestem pewien, jakie są twoje powody, bo cały pomysł wydaje się nieco dziwny, ale dobrze. pam_ssh to moduł, który to robi.

+0

Witaj kirelagin, Powodem, dla którego chcę to zrobić, jest to, że chcę przełączyć się do innego użytkownika na tym samym komputerze bez konieczności zostania pierwszym rootem, a następnie przełączenia się na innego użytkownika. Więc myślałem, że klucze SSH będą rozwiązaniem tego. Ale myślę, że się myliłem. Zamiast tego chcę przełączyć się z jednego użytkownika na innego (bez zostania rootem) za pomocą sudo su - user2 i unikać monitowania hasła. Pomyślałem więc, że klucze ssh pomogłyby tutaj. – Pier

+0

Jasne, klucze ssh mogą ci pomóc, ale nie potrzebujesz "sudo", wystarczy "su". Jak już wspomniałem, możesz użyć modułu 'pam_ssh' i skonfigurować swój PAM, aby używał go do uwierzytelniania' su'. Zauważ, że i tak będziesz musiał wprowadzić hasło, aby odszyfrować klucz SSH, ponieważ klucz nie jest zaszyfrowany hasłem, to trochę bezużyteczne. – kirelagin

+0

@kirelagin - ssh-agents wykonuje zadanie, aby nie wpisywać haseł. –

4

Aby sudo pracować bez podawania haseł do innego użytkownika są wymagane zmiany (wykonać je z super dostępu użytkownika):

Edycja/etc/sudoers

visudo 

Config zmienia

# Allow user to sudo su as anyone without password 
user ALL=(ALL)  NOPASSWD: ALL 
%group ALL=(ALL)  NOPASSWD: ALL 

# Allow user to become another user 
user ALL=(user2) NOPASSWD: ALL 
%group ALL=(user2) NOPASSWD: ALL 

teraz z tym ostatnim sudo su - użytkownik2 powinien pracować

The Jedyną przeszkodą był użytkownika mają być dodane do sudo

usermod -a -G sudo user 

Powyższe przykłady w konfiguracji pokazuje użytkownik najpierw następnie grupę - należy jedynie 1 z dwóch -

Zmieniano:

visudo 

%group2 ALL=(ALL:ALL) PASSWD: ALL 
%group1 ALL=(ALL:ALL) NOPASSWD: ALL 

grupa run Dodaj

groupadd group1 
groupadd group2 

więc dla użytkowników wymagających hasła

usermod -a -G group2 user1 
usermod -a -G group2 user2 
etc.. 

dla użytkowników, którzy nie wymagają hasła:

usermod -a -G group nuser1 
usermod -a -G group nuser2 
etc 
+0

Cześć vahid, dziękuję za odpowiedź. W ten sposób nie używam klawiszy ssh. Pozwól mi wyjaśnić, co próbuję zrobić. Załóżmy, że mam user1, user2 i user3. Chcę, aby użytkownik 1 mógł przełączać się na użytkownika 2 za pomocą kluczy ssh i bez pytania o hasło. To samo dotyczy użytkownika 2 do użytkownika 1. Ale nie chcę, aby użytkownik3 mógł przełączać się do innych użytkowników bez hasła. Tutaj w tym przykładzie rozważam tylko 3 użytkowników, ale w rzeczywistości mam około 50 użytkowników w jednym komputerze. Zatem przechodzenie do pliku sudoers i dodawanie każdego z tych 50 użytkowników nie jest tak skuteczne, chyba że się mylę. – Pier

+0

zrób to za pośrednictwem grup, a następnie - utwórz grupy zawierające warianty, a następnie dołącz użytkowników jako część odmian, tak więc group1 {allowed users} group2 {inna reguła}, a następnie używając konfiguracji sudo będziesz potrzebować dwóch linii% grupy i% grupy2 - Nie ma związku pomiędzy sudo a ssh config .. – Vahid

+2

http://www.evans.io/posts/ssh-agent-for-sudo-authentication/ spójrz tutaj, aby spróbować połączyć te dwa elementy - jest włączony typowa konfiguracja bez powiązań .. – Vahid

Powiązane problemy