it-swarm-eu.dev

Jak mohu nastavit přihlašovací jméno SSH bez hesla?

Chci se moci přihlásit k vzdálenému zařízení pomocí ssh, aniž bych musel neustále zadávat heslo.

  • Jak to nastavím?
  • Je pro provedení relace bez hesla vyžadován jiný příkaz?
266
Oxwivi

Odpovědět

Spusťte tyto příkazy:

ssh-keygen

Potom budete muset zkopírovat nový klíč na server :

ssh-copy-id [email protected]
## or if your server uses custom port no:
ssh-copy-id "[email protected] -p 1234"

Po zkopírování klíče ssh do stroje jako obvykle:

ssh [email protected]

Nyní se můžete přihlásit bez zadání hesla z konkrétního počítače, na kterém jste provedli příkazy.

Příklad

[email protected]:~$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/not-marco/.ssh/id_rsa): 
Created directory '/home/not-marco/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/not-marco/.ssh/id_rsa.
Your public key has been saved in /home/not-marco/.ssh/id_rsa.pub.
The key fingerprint is:
b1:25:04:21:1a:38:73:38:3c:e9:e4:5b:81:e9:ac:0f [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|.o= . oo.        |
|*B.+ . .         |
|*=o .   o .      |
| = .     =       |
|. o     S        |
|E.               |
| o               |
|  .              |
|                 |
+-----------------+

[email protected]:~$ ssh-copy-id [email protected]
[email protected]'s password: 
Now try logging into the machine, with "ssh '[email protected]'", and check in:

  ~/.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Vysvětlení

To předpokládá, že se již můžete úspěšně připojit k serveru přes SSH.

Budete muset vygenerovat SSH Keypair, který vám umožní identifikovat vás jako sebe bez použití hesla. Pokud si přejete, můžete se rozhodnout chránit klíče heslem, ale toto může zůstat prázdné, což umožňuje přístup SSH zcela bez hesla.

  1. Nejprve vytvořte svůj SSH Keypair spuštěním ssh-keygen vytvoří se id_rsa a id_rsa.pub soubor. Soubor pub je to, co se děje na serverech, soukromý klíč (id_rsa) je to, co s vámi zůstává a jak se identifikujete.
  2. Poté zkopírujte veřejný klíč na svůj server pomocí ssh-copy-id [email protected] nahrazení uživatele vzdáleným uživatelem a serverem jménem DNS stroje nebo IP adresou. Vyzve k zadání hesla SSH, zadejte jej a pokud budou všechny úspěšně dokončeny, budete mít přístup ke stroji přes ssh [email protected] bez nutnosti hesla.

Reference

278
Rinzwind

Zadejte následující příkazy:

  1. ssh-keygen

    Lis Enter klíč, dokud nedostanete výzvu

  2. ssh-copy-id -i [email protected]_address

    (Jednou požádá o heslo hostitelského systému)

  3. ssh [email protected]_address

Nyní byste se měli moci přihlásit bez hesla.

35
Ravindra

Obvykle to dělám následovně:

ssh-keygen -t rsa

(Až budete vyzváni k zadání hesla, nechte je prázdné)

Pak: cat ~/.ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'

(To vyžaduje, aby složka .ssh byla v domovském adresáři na cílovém názvu hostitele, v němž je umístěn soubor autorizovaných_keys)

Samozřejmě nahraďte uživatelské jméno požadovaným uživatelským jménem a jméno hostitele požadovaným jménem hostitele nebo IP adresou

Po tom, právě SSH do té krabice, jako jste zvyklí.

26
kyentei

Normálně k tomu používám sshpass, instaluji jej s Sudo apt-get install sshpass a používejte to takto

sshpass -p 'password' ssh [email protected]_server
18
Bruno Pereira

Zakázat ověřování heslem

Protože mnoho lidí se servery SSH používá slabá hesla, mnoho online útočníků vyhledá server SSH a poté začne náhodně hesla hádat. Útočník může vyzkoušet tisíce hesel za hodinu a uhodnout i to nejsilnější heslo, které má dostatek času. Doporučeným řešením je použít klíče SSH místo hesel. Aby bylo těžké uhodnout jako normální klíč SSH, heslo by muselo obsahovat 634 náhodných písmen a čísel. Pokud se budete vždy moci přihlásit k počítači pomocí klíče SSH, měli byste úplně zakázat ověřování heslem.

Pokud zakážete ověřování heslem, bude možné se připojit pouze z počítačů, které jste výslovně schválili. To výrazně zvyšuje vaši bezpečnost, ale znemožňuje vám připojit se k vlastnímu počítači z počítače přítele bez předchozího schválení počítače nebo z vlastního notebooku, když omylem smažete klíč.

Doporučujeme zakázat ověřování heslem, pokud nemáte konkrétní důvod.

Chcete-li zakázat ověřování heslem, vyhledejte v souboru sshd_config následující řádek:

#PasswordAuthentication yes

nahraďte jej řádkem, který vypadá takto:

PasswordAuthentication no

Jakmile soubor uložíte a restartujete server SSH, neměli byste být při přihlášení ani požádáni o heslo.

https://help.ubuntu.com/community/SSH/OpenSSH/Configuring#disable-password-authentication

11
Thufir

Toto řešení je speciálně pro uživatele používající Windows ssh do jejich vzdálených počítačů včetně cloudových obrázků na AWS Cloud a GCE Cloud

Zřeknutí se odpovědnosti

Toto řešení se nedávno použilo pro vzdálené přihlášení nových rozmístěných obrázků vm v GCE.


Použité nástroje:

  1. puttygenstažení puttygen
  2. winscpstažení winscp

Kroky k provedení:

  1. Generujte pár veřejného a soukromého klíče pomocí puttygen.
  2. Nahrajte veřejný klíč na svůj server v cloudu nebo na vzdáleném místě.

Jak to udělat:

1. Vygenerujte klíč/pár nebo použijte existující soukromý klíč

Pokud vlastníte soukromý klíč:

Otevřete puttygen, stiskněte tlačítko Load a vyberte svůj soukromý klíč (*.pem).


Pokud nevlastníte soukromý klíč:

  • Otevřít puttygen,
  • Vyberte požadovaný typ klíče SSH2 DSA (můžete použít RSA nebo DSA) v sekci Parametry . Je důležité ponechat pole přístupové fráze prázdné.
  • Lis generate a postupujte podle pokynů k vygenerování (veřejného/soukromého) páru klíčů.

Sample Key Generation pic

(ze zdroje 1, níže uvedený odkaz)

2. Vytvořte nový soubor „autorizované_keys“ (s notepad)

Zkopírujte data veřejného klíče z části „Veřejný klíč pro vložení do souboru OpenSSH autorizovaných_keys“ generátoru klíčů PuTTY a vložte data klíčů do authorized_keys soubor.


Ujistěte se, že v tomto souboru je pouze jeden řádek textu.


3. Nahrajte klíč na server Linux

  • Otevřete WinSCP,
  • Vyberte protokol protokolu SFTP a přihlaste se pomocí svých pověření ssh.
  • Po úspěchu uvidíte strukturu domovského adresáře na vzdáleném počítači.

Nahrajte soubor autor_keys do domovského adresáře na vzdáleném počítači.


4. Nastavte správná oprávnění

Udělat .ssh adresář (pokud neexistuje)


Kopírovat authorized_keys soubor do .ssh adresář.
(nahradí všechny existující authorized_keys soubor, vezměte na vědomí toto).

Pokud soubor existoval, jednoduše přidejte obsah tohoto souboru do existujícího souboru.


Spusťte příkazy pro nastavení oprávnění:

Sudo chmod 700 .ssh && chmod 600 .ssh/authorized_keys

Nyní budete moci ssh do vzdáleného počítače, aniž byste pokaždé zadali přihlašovací údaje.

Další čtení:

9
devprashant

Pokud vytvoříte veřejný klíčový klíč a přihlásíte se pomocí našeho nově vytvořeného veřejného klíče, nebudete muset zadávat heslo. V závislosti na konfiguraci agenta vyzvánění a/nebo ssh může být nutné chránit váš klíč heslem.

Zde je pro vás jeden z mnoha krátkých howto s. Pro bezpečnost této metody je zásadní, aby vygenerovaný soukromý klíč zůstal soukromý! Nikdy byste jej neměli sdílet s nikým nebo mu umožňovat přístup k nim v jakékoli kapacitě.

Tento příkaz vygeneruje v ~/.ssh/:

ssh-keygen -b 4096

V ~/.ssh/ najdete svůj veřejný klíč jako id_rsa.pub. Jeho obsah by měl být připojen k vašim serverům authorized_keys soubor přenesením přes přenositelné médium (pero) nebo krátkým povolením ověření hesla na serveru, poté pomocí ssh-copy-id ~/.ssh/id_rsa.pub [email protected] a poté ji znovu deaktivujete.

Pokud jste se rozhodli zabezpečit klíč pomocí přístupového hesla (v prvním kroku), můžete použít ssh-agent nebo klíčenka Ubuntu, abyste zabezpečili lokální frázi, takže jej nemusíte zadávat neustále.

4
con-f-use

Vzdálené přihlášení/kopírování bez zadání hesla

Aplikace ssh a scp pro vzdálené přihlášení, respektive vzdálené kopírování, vám umožňují komunikovat se vzdáleným hostitelem bez zadání hesla. Vyžaduje to provedení postupu ověřování, jako je postup popsaný níže. Klientem myslíme stroj, na kterém sedíte, a serverem myslíme stroj, ke kterému se chcete přihlásit bez zadání hesla. Kroky postupu ověřování jsou:

  1. Spusťte ssh-keygen pro generování soukromých a veřejných klíčů, pokud to již není na vašem počítači provedeno. Jsou uloženy v souborech v $HOME/.ssh.
  2. Připojte obsah souboru veřejného klíče k souboru $HOME/.ssh/authorized_keys nebo $HOME/.ssh/authorized_keys2 na serveru.

Existují tři různé typy ověřovacích protokolů. Při spuštění ssh-keygen zadáte typ:

  1. [~ # ~] ssh [~ # ~] protokol verze 1, RSA1: Toto je výchozí volba a výsledkem je identita souborů (soukromý klíč, měl by mít chmod 0700, aby se zajistilo, že tento soubor nebude čitelný pro ostatní) a identity.pub (veřejný klíč).
  2. [~ # ~] ssh [~ # ~] protokol verze 1, [~ # ~] rsa [~ # ~] : toto je získáno spuštěním ssh-keygen -t rsa a výsledky v souborech id_rsa (soukromý klíč) a id_rsa.pub (veřejný klíč)
  3. [~ # ~] ssh [~ # ~] protokol verze 1, [~ # ~] dsa [~ # ~] : toto je získáno spuštěním ssh-keygen -t dsa a výsledky v souborech id_dsa (soukromý klíč) a id_dsa.pub (veřejný klíč)

Při spuštění ssh-keygen se můžete spolehnout na výchozí odpovědi (což znamená, že nedáte heslo). Díky tomu je celá sestava jednoduchá, ale také nejistá.

Můžete určit typ klíčů, které budou použity volbou pro ssh ; ssh -1 vynutí použití RSA1 klíčů (verze protokolu 1), zatímco ssh -2 nutí ssh k pokusu [~ # ~] rsa [~ # ~] nebo [~ # ~] dsa [~ # ~] pouze klíče (verze protokolu 2). V příkladech níže generujeme a instalujeme RSA1 a [~ # ~] dsa [~ # ~] klávesy na vzdáleném hostiteli, takže máte větší flexibilitu. Můžete vytvořit konfigurační soubor ve svém .ssh adresář s řádkem

Protocol 1,2

Díky tomu ssh vyzkoušejte RSA1 (verze protokolu 1) před RSA/DSA (verze protokolu 2).

Pomocí kláves RSA1

[email protected]   # fill in correct user and remotehost names
cd $HOME/.ssh
# create .ssh on remote Host if it is non-existing:
ssh $remote 'if [ ! -d .ssh ]; then mkdir .ssh; fi' 
# copy RSA1 key: 
scp identity.pub ${remote}:.ssh
ssh $remote "cd .ssh; cat identity.pub >> authorized_keys"

Pomocí klíčů DSA

[email protected]   # fill in correct user and remotehost names
cd $HOME/.ssh
# create .ssh on remote Host if it is non-existing:
ssh $remote 'if [ ! -d .ssh ]; then mkdir .ssh; fi' 
# copy DSA key: 
scp id_dsa.pub ${remote}:.ssh
ssh $remote "cd .ssh; cat id_dsa.pub >> authorized_keys2"

To je vše, co musíte udělat, pokud jste při generování klíčů nepoužívali přístupové heslo. Můžete otestovat připojení spuštěním ssh $ remote a zjistit, zda se můžete přihlásit bez zadání hesla (možná budete muset použít -1 nebo -2 jako možnosti ssh ). Postup lze samozřejmě opakovat pro jakýkoli stroj, ke kterému se chcete přihlásit.

Pokud jste použili přístupové heslo, musíte spustit program ssh-agent pro spuštění speciální Shell, následovaný ssh-add k registraci vaší klíč/přístupová fráze kombinace s sshd. Další informace naleznete na manuálových stránkách těchto programů.

Skript pro automatizaci připojení bez hesla: ssh-no-password.sh

#!/bin/sh

# create ssh connections without giving a password

if [ $# -lt 1 ]; then
  echo Usage: $0 [email protected]
  exit
fi
remote="$1"  # 1st command-line argument is the [email protected] address
this=$Host   # name of client Host

# first check if we need to run ssh-keygen for generating
# $HOME/.ssh with public and private keys:
if [ ! -d $HOME/.ssh ]; then
  echo "just type RETURN for each question:" # no passphrase - unsecure!!
  # generate RSA1, RSA and DSA keys:
  echo; echo; echo
  ssh-keygen
  echo; echo; echo
  ssh-keygen -t rsa
  echo; echo; echo
  ssh-keygen -t dsa
else
  # we have $HOME/.ssh, but check that we have all types of
  # keys (RSA1, RSA, DSA):
  if [ ! -f $HOME/.ssh/identity ]; then
     # generate RSA1 keys:
     echo "just type RETURN for each question:" # no passphrase - unsecure!!
     ssh-keygen
  fi
  if [ ! -f $HOME/.ssh/id_rsa ]; then
     # generate RSA keys:
     echo "just type RETURN for each question:" # no passphrase - unsecure!!
     ssh-keygen -t rsa
  fi
  if [ ! -f $HOME/.ssh/id_rsa ]; then
     # generate DSA keys:
     echo "just type RETURN for each question:" # no passphrase - unsecure!!
     ssh-keygen -t dsa
  fi
fi


cd $HOME/.ssh

if [ ! -f config ]; then
  # make ssh try ssh -1 (RSA1 keys) first and then ssh -2 (DSA keys)
  echo "Protocol 1,2" > config
fi

# copy public keys (all three types) to the destination Host:

echo; echo; echo
# create .ssh on remote Host if it's not there:
ssh $remote 'if [ ! -d .ssh ]; then mkdir .ssh; fi' 
# copy RSA1 key: 
scp identity.pub ${remote}:.ssh/${this}_rsa1.pub
# copy RSA key:
#scp id_rsa.pub ${remote}:.ssh/${this}_rsa.pub
# copy DSA key:
scp id_dsa.pub ${remote}:.ssh/${this}_dsa.pub
# make authorized_keys(2) files on remote Host:

echo; echo; echo
# this one copies all three keys:
#ssh $remote "cd .ssh; touch authorized_keys authorized_keys2; cat ${this}_rsa1.pub >> authorized_keys; cat ${this}_rsa.pub >> authorized_keys2; cat ${this}_dsa.pub >> authorized_keys2;"
# this one copies RSA1 and DSA keys:
ssh $remote "cd .ssh; touch authorized_keys authorized_keys2; cat ${this}_rsa1.pub >> authorized_keys; cat ${this}_dsa.pub >> authorized_keys2;"

echo; echo; echo
echo "try an ssh $remote"

zkopírováno z: http://folk.uio.no/hpl/scripting/doc/ssh-no-password.html

3
αғsнιη

Provedení několika doplňků:

  • Mac ve výchozím nastavení nemá ssh-copy-id, budete si to muset nainstalovat sami:

    curl https://raw.github.com/beautifulcode/ssh-copy-id-for-OSX/master/ssh-copy-id.sh -o /usr/local/bin/ssh-copy-id
    chmod +x /usr/local/bin/ssh-copy-id
    

více zde: https://github.com/beautifulcode/ssh-copy-id-for-OSX

  • pokud jste provedli přeposílání portů, příkaz by měl být následující:

    ssh-copy-id "[email protected] -p 2222"
    

všimněte si, že citace jsou nezbytné.

3
samluthebrave

Chtěl bych přidat odpověď pro ty, kteří mohou zjistit, že by měli zadat heslo, i když zde přečetli všechny odpovědi, protože jste nastavili IdentitiesOnly jako yes. Odpověď zde může ušetřit spoustu času na správu více klíčů, což jsou klíče pro git nebo server.

Po vygenerování klíče a jeho zkopírování na server:

ssh-keygen  # change the file to /home/yourname/.ssh/something
ssh-copy-id -i ~/.ssh/something.pub [email protected]

Zjistil jsem, že to nefunguje.

Pak jsem šel zkontrolovat ~/.ssh/config soubor na klientovi, viděl jsem to dole:

Host *
IdentitiesOnly yes

Pak přidám toto výše:

Host somename
HostName 192.168.20.160
User lerner
IdentityFile ~/.ssh/something

Mohu se pouze přihlásit zadáním ssh somename.

Potom můžete přidat více klíčů ssh pomocí svých oblíbených jmen a do konfiguračního souboru stačí přidat nastavení jako výše uvedené čtyři řádky.

Host je jméno, které chcete zadat při pozdějším připojení serveru; název_hostitele je ip serveru; Uživatel je uživatelské jméno, které se přihlásíte na server; a soubor identity je soubor, do kterého uložíte vygenerovaný klíč.

1
Lerner Zhang