V našich předchozích článcích jsme diskutovali o tom, jak nastavit autentizaci založenou na klíči ssh pro provádění ssh a scp bez hesla pod následující tři scénáře:
- OpenSSH na OpenSSH
- OpenSSH na SSH2
- SSH2 až SSH2
V tomto článku vysvětlím, jak provádět ssh a scp z SSH2 (lokální hostitel) na OpenSSH (vzdálený hostitel) bez hesla.
1. Identifikujte verzi SSH místního hostitele a vzdáleného hostitele
V tomto příkladu místní hostitel používá SSH2 a vzdálený hostitel používá OpenSSH.
[local-host]$ ssh -V ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on i686-pc-linux-gnu [remote-host]$ ssh -V OpenSSH_4.3p2, OpenSSL 0.9.8b 04 May 2006
2. Vygenerujte pár ověřovacích klíčů SSH2 na místním hostiteli pomocí ssh-keygen2
Na SSH2 bude ssh-keygen měkkým odkazem na ssh-keygen2, jak je znázorněno níže.
[local-host]$ ls -l /usr/local/bin/ssh-keygen lrwxrwxrwx 1 root root 11 Jul 31 2006 /usr/local/bin/ssh-keygen -> ssh-keygen2 [local-host]$ ssh-keygen Generating 2048-bit dsa key pair 7 o.oOo..oOo.o Key generated. 2048-bit dsa, jsmith@local-host, Sun Oct 19 2008 14:49:42 -0700 Passphrase : [Enter the password here] Again : Private key saved to /home/jsmith/.ssh2/id_dsa_2048_a Public key saved to /home/jsmith/.ssh2/id_dsa_2048_a.pub
Veřejný klíč a soukromý klíč jsou uloženy ve složce .ssh2 ve vašem domovském adresáři. V tomto příkladu je pod /home/jsmith/.ssh2.
Soukromý klíč byste neměli s nikým sdílet.
Ve výchozím nastavení ssh-keygen2 generuje pár klíčů DSA (Digital Signature Algorithm). Můžete také vygenerovat pár klíčů RSA, jak je uvedeno níže.
[local-host]$ ssh-keygen -t rsa
3. Zkopírujte veřejný klíč SSH2 z místního hostitele na vzdálený hostitel, na kterém běží OpenSSH
Zkopírujte soubor local-host:/home/jsmith/.ssh2/id_dsa_2048_a.pub do vzdáleného hostitele:/home/jsmith/.ssh/id_dsa_1024_a.pub. Proveďte vi /home/jsmith/.ssh/id_dsa_1024_b.pub na vzdáleném hostiteli a zkopírujte obsah veřejného klíče z místního hostitele.
[remote-host]$ vi /home/jsmith/.ssh/id_dsa_1024_a.pub ---- BEGIN SSH2 PUBLIC KEY ---- Subject: jsmith Comment: "2048-bit dsa, jsmith@local-host Sun Oct 19 2008 14:49:42 -070\0" 7ZTVd7H63VyVqBIqfmEBALVa6VKtALZkydlOiPasikEQfujH07tjW+OffaRufFDG0VQESj 5iGSvMtmBBj8wQxGlvJ/dayVqBvvHzMao8bwGC+HFUtH1un7uyIEwOqU1fNzEpghC97mIx tIxJA7ZTVd7H63VIqmzlLbp/ZCd6bcJLvZEepMz96nlNB4NJ5UYIfdgXNhf/TrJD8COWQs t6jsP6RG/WrpHi5iGSvMtmBBj8wQGHddexkRnf/o5YMFJZRo4Iwc7+bgYrIyywBZnfLL7T RTk9TBfWzgJHy/y1tTtCMvVooWvFZbG5AiV3de63MxBaD0o68SASyXZzVM+MabXhjcdXFY 2vjq2vJxOzunEAAAAVAOTeOzDCnj3K5iGSvMtmBBj8wQGHAAABAA38sGpHEfSxLx5MjQci dko1pKuV1W9rOK3y19A2J2N6rSdWYb7Zyzw8Gr7kTMWX1TP5WhRGCUhNRYnjI+4wgZIZdC lfGdp8MGI3HBg9CAr702BOzRTMnW0aqsGjrbhcwhWaDgRymhBh++nGAhHxeWn4ApJ8F6kT 8HaAm3dFYXpHCaZ/xuKPXr4DFugGl8MRDU8TwioNE9kRi0Ko/kB5LTHuGhMPHGshMJeVGi PQTrt9NAzgYyJeT9RB9VZadgElMvQ9S0+fo6ipOA== ---- END SSH2 PUBLIC KEY ----
4. Na místním hostiteli vytvořte soubor ~/.ssh2/identification
Vytvořte následující soubor na místním hostiteli.
$ vim ~/.ssh2/identification IdKey id_dsa_2048_a
5. Na vzdáleném hostiteli převeďte veřejný klíč SSH2 na veřejný klíč OpenSSH
To by mělo být provedeno na vzdáleném hostiteli, na kterém běží OpenSSH. Pouze OpenSSH dokáže převádět klíče tam a zpět mezi formáty OpenSSH a SSH2.
[remote-host]$ ssh-keygen -i -f ~/.ssh/id_dsa_1024_a.pub > \ ~/.ssh/id_dsa_1024_a_openssh.pub
Zkopírujte převedený veřejný klíč OpenSSH ze souboru ~/.ssh/id_dsa_1024_a_openssh.pub do souboru author_keys, jak je uvedeno níže.
[remote-host]$ vi ~/.ssh/authorized_keys ssh-dss 5iGSvMtmBBj8wQdegAEBALVa6VKtALZkydlOiPasikEQfujH07tjW+OffaRufFD G0VQESjq+YlVTWcXxStz0xGlvJ/dayVqBvvHzMao8bwGC+HFUtH1un7uyIEwOqU1fNzEpgh C97s143S8zBcTAGtdegte3IqmlLbp/ZCd6bcJLvZEepMz96nlNB4NJ5UYIfdgXNhf/TrJD8 COWQst6jsP6RG/WrpHiI4QVDM6tZVZ4CnGjm1QPkRnf/o5YMFJZRo4Iwc7+bgYrIyywBZnf LL7TRTk9TBfWzgJHy/y1tTtCMvVooWvFZbG5AiV3de63MxBaD0o68SASyXZzVM+MabXhjcd XFY2vjq2vJxOzunEAAAAVAOTeOzDCnj3K5iGSvMtmBBj8wQGHAAABAA38sGpHEfSxLx5MjQ dFYXpHCaZ/xuKPXr4DFugGl8MRDU8TwioNE9kRi0Ko/kB5LTHuGhMPHGshMJeVGiPQTrt9N AzgYyJeT9RB9VZadgElMvQ9S0+fo6ipOA==
6. Nastavte správná oprávnění na vzdáleném hostiteli k adresáři .ssh
Na vzdáleném hostiteli, na kterém běží openSSH, nezapomeňte nastavit následující oprávnění. Bez toho budete mít všechny druhy podivných problémů s ssh.
$ chmod 755 ~ $ chmod 755 ~/.ssh $ chmod 644 ~/.ssh/authorized_keys
7. Přihlaste se z místního hostitele ke vzdálenému hostiteli pomocí ověřování pomocí klíče SSH
Proveďte ssh z místního hostitele (SSH2) do vzdáleného hostitele (OpenSSH), jak je uvedeno níže, abyste ověřili, zda autentizace založená na klíči funguje správně.
[local-host]$ [You are on local-host here] [local-host]$ ssh -l jsmith remote-host Host key not found from database. Key fingerprint: bitaz-navun-gogus-mptop-ljilk-qwlem-ftrtm-llmak-topok-zuiof-bnmix You can get a public key's fingerprint by running % ssh-keygen -F publickey.pub on the keyfile. Are you sure you want to continue connecting (yes/no)? yes Host key saved to /home/jsmith/.ssh2/hostkeys/key_22_remote-host.pub host key for remote-host, accepted by jsmith Sun Oct 19 2008 15:06:42 -0700 Passphrase for key "/home/jsmith/.ssh2/id_dsa_2048_a" with comment "2048-bit dsa, jsmith@local-host, Sun Oct 19 2008 14:49:42 -0700":[Enter password] Last login: Sun Oct 19 14:01:48 2008 from 192.168.1.10 [remote-host]$ [You are on remote-host here]
Poznámka :Pokud se při provádění ssh nebo scp z místního hostitele na vzdálený hostitel zobrazí následující chyba, přečtěte si téma Jak vyřešit problém se selháním vyjednávání algoritmu na SSH, kde tento problém vyřešíte.
[local-host]$ ssh -l jsmith remote-host warning: Authentication failed. Disconnected; key exchange or algorithm negotiation failed (Algorithm negotiation failed.)
Existují dva způsoby, jak provést ssh a scp bez zadání hesla:
- Žádná přístupová fráze: Při vytváření páru klíčů ponechte heslo prázdné. Tuto volbu použijte pro automatizované dávkové zpracování. pro např. pokud spouštíte úlohu cron pro kopírování souborů mezi počítači, je to vhodná volba. Kroky dalšího kroku této metody můžete přeskočit.
- Použijte přístupové heslo a agenta SSH :Pokud používáte ssh a scp interaktivně z příkazového řádku a nechcete používat heslo pokaždé, když provádíte ssh nebo scp, nedoporučuji předchozí možnost (bez přístupové fráze), protože jste jednu odstranili úroveň zabezpečení v autentizaci na základě ssh klíče. Místo toho použijte při vytváření páru klíčů přístupovou frázi a pomocí agenta SSH proveďte ssh a scp, aniž byste museli pokaždé zadávat heslo, jak je vysvětleno v krocích níže.
8. Spusťte SSH Agenta na local-host
Agent SSH bude spuštěn na pozadí, aby podržel soukromé klíče a provedl ssh a scp, aniž by bylo nutné několikrát zadávat přístupovou frázi.
[local-host]$ ssh-agent $SHELL
9. Načtěte soukromý klíč do agenta SSH na místním hostiteli
[local-host]$ ssh-add Adding identity: /home/jsmith/.ssh2/id_dsa_2048_a.pub Need passphrase for /home/jsmith/.ssh2/id_dsa_2048_a (2048-bit dsa, jsmith@local-host, Sun Oct 19 2008 14:49:42 -0700). Enter passphrase:[Enter your passphrase here]
10. Provádějte SSH nebo SCP z místního hostitele do vzdáleného domova bez zadání hesla
[local-host]$ [You are on local-host here] [local-host]$ ssh -l jsmith remote-host Last login: Sun Oct 19 14:20:48 2008 from 192.168.1.10 [remote-host]$ [You are on remote-host here]
Pokud se vám tento článek líbil, sdílejte ho na delicious and Stump it .