it-swarm.dev

Jak nastavit přístup bez hesla SSH pro uživatele root

Musím nakonfigurovat stroj, aby instalace softwaru mohla být automatizována vzdáleně přes SSH. Po wiki jsem byl schopen nastavit SSH klíče, aby můj uživatel měl přístup ke stroji bez hesla, ale stále potřebuji ručně zadat své heslo, když používám Sudo, což samozřejmě automatizovaný proces by neměl dělat.

Ačkoli moje /etc/ssh/sshd_configPermitRootLogin yes, Zdá se, že se nemohu přihlásit jako root, pravděpodobně proto, že se nejedná o „skutečný“ účet se samostatným heslem.

Jak nakonfiguruji klíče SSH, aby se proces mohl vzdáleně přihlásit jako root na Ubuntu?

47
Cerin

Část 1: SSH klíč bez hesla

Chcete-li nastavit připojení SSH bez hesla pro uživatele root, musíte mít na serveru přístup root. Nejjednodušší metodou je dočasně umožnit rootovi přihlásit se přes ssh pomocí hesla. Tak či onak budete potřebovat root přístup na serveru. Pokud na serveru nemáte přístup root, požádejte o pomoc správce serveru.

Na klientovi (kde ssh FROM)

Nejprve vytvořte ssh klíč bez hesla. Důrazně doporučujeme, abyste mu dali jméno, nikoli výchozí

ssh-keygen -f foo

Možnost -f určuje název souboru, foo je příklad, použijte libovolné jméno, které si přejete.

Až budete vyzváni k zadání hesla, stačí stisknout klávesu Enter a vygenerujete klíč bez hesla.

Dále je třeba přenést klíč na server. Nejjednodušší metodou je použití ssh-copy-id. Chcete-li to provést, musíte dočasně povolit ssh root na server.

Na serveru (kam ssh TO)

upravit /etc/ssh/sshd_config

Sudo nano /etc/ssh/sshd_config

Nezapomeňte povolit přihlášení root s následující syntaxí

PasswordAuthentication yes
PermitRootLogin yes

Restartujte server

Sudo service ssh restart

Nastavte root heslo, použijte silné

Sudo passwd

Na klientovi:

Z klienta převeďte klíč na server

ssh-copy-id -i ~/.ssh/foo [email protected]

změňte „foo“ název klíče a na požádání zadejte heslo uživatele root.

Vyzkoušejte klíč

ssh -i ~/.ssh/foo [email protected]

Za předpokladu, že to funguje, zrušte nastavení rootova hesla a deaktivujte přihlašovací heslo.

Na serveru:

Sudo passwd -l root

Upravit /etc/ssh/sshd_config

Sudo nano `/etc/ssh/sshd_config`

Změňte následující:

PasswordAuthentication no
PermitRootLogin without-password

Restartujte server

Sudo service ssh restart

Na klientovi (Test):

Nyní byste měli mít možnost zasáhnout pomocí svého klíče bez hesla a neměli byste být schopni zasáhnout jako každý uživatel bez klíče.

ssh -i ~/.ssh/foo [email protected]

Část 2: Spouštění příkazů přes Sudo bez zadání hesla

Nakonfigurujete Sudo, aby vám umožňovalo spouštět příkazy bez hesla.

To je zodpovězeno zde na dvou místech:

Z těchto dvou navrhuji povolit co nejméně příkazů (první odpověď), spíše než všechny příkazy (druhá odpověď).

62
Ashimema

Jsou matoucí dvě různé věci:

protokol bez hesla se používá k zajištění toho, aby se lidé nemohli přihlásit k vašemu systému vzdáleně uhodnutím hesla. Pokud můžete ssh uživatelské jméno @ stroj a připojit se bez hesla, je to správně nastaveno a s tím nemá nic společného.

Sudo se používá k povolení běžného uživatelského účtu dělat něco s oprávněními super uživatele. To vyžaduje , aby uživatel zadal heslo. K tomu dochází, ať už jste připojeni vzdáleně (pomocí hesla bez hesla nebo chráněného heslem SSH), nebo jste na zařízení lokální. Pokoušíte se nastavit Sudo, aby nepožadoval heslo, což se nedoporučuje, ale můžete se naučit, jak to udělat pomocí odpovědi typu https://askubuntu.com/a/74083/6161

Poznámka pro budoucí čtenáře této odpovědi:

Moje výše uvedená odpověď neodpovídá na původní otázku původního autora, ale popisuje, co byste měli dělat . Pokud opravdu chcete povolit vzdálená připojení přímo ke kořenovému účtu, musíte povolit kořenový účet (viz můj komentář níže). Opět mi dovolte říci NEJSOU povolit vzdálené vzdálené přihlášení ke svému kořenovému účtu.

8
David Oneill

Q. Přihlaste se ke vzdálenému hostiteli jako uživatel root pomocí SSH bez hesla (například ssh root @ remotehost_ip)

A. Chcete-li se přihlásit ke vzdálenému hostiteli jako uživatel root pomocí SSH bez hesla, postupujte následovně.

1. krok:
Nejprve musíte sdílet veřejný klíč místního uživatele se vzdáleným souborem root_hostitele root root. Existuje mnoho způsobů, jak toho dosáhnout, zde je jeden příklad.

https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2

Nebo můžete jednoduše zkopírovat vložit obsah veřejného klíče do souboru vzdáleného uživatele root root__ autorys.

2. krok:
Nakonfigurujte ssh tak, aby umožňoval přihlášení bez hesla ve vzdáleném hostiteli. Přihlaste se ke vzdálenému hostiteli a upravte soubor/etc/ssh/sshd_config a restartujte službu ssh. Nezapomeňte okomentovat „PermitRootLogin ano“.

#vim /etc/ssh/sshd_config
PermitRootLogin without-password
StrictModes no

#service ssh restart

Komentář mimo #PermitRootLogin ano

3. krok:
Otestujte připojení z místního počítače pomocí uživatele, jehož veřejný klíč je dříve sdílen.

$ssh [email protected]_ip
6
Aanokpe Rai

PermitRootLogin řídí, zda se uživatel s názvem "root" (přesněji: každý uživatel s UID 0) může přihlásit. Pokud se přihlašujete jako root, nepotřebujete k provádění privilegovaných úkolů Sudo.

Na druhou stranu, pokud se chcete přihlásit k uživatelskému účtu a používat Sudo bez hesla, musíte nakonfigurovat soubor sudoers, aniž byste se museli hádat s /etc/ssh/sshd_config. Viz Jak si Ubuntu zapamatovat navždy heslo po prvním použití

2
Lekensteyn