it-swarm-eu.dev

SSH přihlášení s heslem jako prostý text jako parametr?

Musím se přihlásit k uživateli, kterého jsem vytvořil na vzdáleném hostiteli se systémem Ubuntu. Nemohu použít klíč ssh, protože k ssh přihlášení dojde z bash skriptu spuštěného na serveru, ke kterému nebudu mít přístup (myslím nepřetržitý integrační server jako je Bamboo).

Chápu, že to není ideální postup, ale chci nastavit vzdáleného hostitele, aby nepožadoval heslo, nebo aby se mohl přihlásit s něčím jako ssh --passsword foobar [email protected], něco jako MySQL vám umožňuje dělat přihlášení.

To nenajdu v man ssh a jsem otevřen všem alternativám, jak tento problém vyřešit.

93
mmla

Na Ubuntu nainstalujte balíček sshpass a použijte jej takto:

sshpass -p 'YourPassword' ssh [email protected]

sshpass také podporuje předávání hesla pro interaktivní klávesnici ze souboru nebo proměnné prostředí, což může být vhodnější volba v jakékoli situaci, kde je zabezpečení důležité. Viz man sshpass pro podrobnosti.

160
likeitlikeit

Pokud je vaše alternativa vložit heslo do skriptu nebo do příkazového řádku ssh nebo do prostého textového souboru, pak jste [~ # ~] hodně [~ # ~] lepší místo toho pomocí klávesy ssh. Každopádně každý, kdo má přístup k účtu, kde je uložen klientský skript ssh, by jej mohl použít k přístupu na server, alespoň v případě klíče ssh, OpenSSH jej správně podporuje, neudělujete přístup jiným způsobem než ssh, v případě potřeby je snadněji odvolán, atd ...

Budete muset vysvětlit, proč máte požadavek nepoužívat ssh klíč.

Zvažte také použití vynuceného příkazu (command="..." v .ssh/authorized_keys file), takže klient má přístup pouze ke spuštění příkazu, který potřebuje na serveru, nikoli k plnému prostředí.

16
Celada

Za prvé, stejně jako ostatní respondenti, doporučuji používat pouze ssh klíče. Budu ale předpokládat, že osoba ovládající server vám jednoduše nedovolí používat ověřování pomocí klíče ssh a musíte použít ověřování pomocí hesla.

Můžete použít ControlMaster a ControlPath.

Nechť A je server, ke kterému nebudete mít přístup (domnívejte se, že server pro kontinuální integraci, jako je Bambus), a C je vzdálený hostitel, na kterém běží Ubuntu.

Nyní nechte B být nějaký počítač, který ovládáte. Pokud nemůžete poskytnout vhodný počítač B, nebude tato odpověď fungovat.

  1. Vytvořte pár klíčů a přidejte veřejnou část do souboru B autorizovaného_keys. Dejte soukromý klíč. Nyní se můžete přihlásit do B z A bez hesla.
  2. Na B ručně ssh -M -S /tmp/controlpath C a zadejte své heslo na výzvu. Poté byste měli být schopni se přihlásit do C z A bez hesla ssh -S /tmp/controlpath C.

Ve skriptu na A můžete napsat ssh B ssh C dostuff.

Pokaždé, když restartujete B, budete muset obnovit připojení ssh -M -S /tmp/controlpath C.

10
emory