Mám dva servery. Oba servery jsou v CentOS 5.6. Chci SSH ze serveru 1 na server 2 pomocí soukromého klíče, který mám (soukromý klíč OpenSSH SSH-2).
Nevím, jak to udělat na unixu. Co jsem ale dělal na Windows pomocí PuTTY, bylo vložit můj soukromý klíč OpenSSH do PuTTY-gen a vygenerovat soukromý klíč ve formátu PPK.
Ze serveru 1 bych však vytvořil bash skript, který provede některé příkazy na serveru 2 prostřednictvím SSH.
Jak mohu SSH na server 2 pomocí svého souboru soukromého klíče ze serveru 1?
Potřebujete veřejný klíč SSH a soukromý klíč ssh. Klíče lze vygenerovat pomocí ssh-keygen
. Soukromý klíč musí být uložen na serveru 1 a veřejný klíč musí být uložen na serveru 2.
Toto je kompletně popsáno v manuálu stránky openssh, takže toho budu hodně citovat. Měli byste si přečíst sekci 'Ověřování'. Také příručka openSSH by měla být opravdu užitečná: http://www.openssh.org/manual.html
Prosím buďte opatrní s ssh, protože to má vliv na zabezpečení vašeho serveru.
Od man ssh
:
~/.ssh/identity
~/.ssh/id_dsa
~/.ssh/id_rsa
Contains the private key for authentication. These files contain
sensitive data and should be readable by the user but not acces-
sible by others (read/write/execute). ssh will simply ignore a
private key file if it is accessible by others. It is possible
to specify a passphrase when generating the key which will be
used to encrypt the sensitive part of this file using 3DES.
~/.ssh/identity.pub
~/.ssh/id_dsa.pub
~/.ssh/id_rsa.pub
Contains the public key for authentication. These files are not
sensitive and can (but need not) be readable by anyone.
To znamená, že můžete svůj soukromý klíč uložit do svého domovského adresáře ve formátu .ssh. Další možností je říct ssh pomocí přepínače parametrů -i
, Aby používal speciální identifikační soubor. Také od man ssh
:
-i identity_file
Selects a file from which the identity (private key) for RSA or
DSA authentication is read. The default is ~/.ssh/identity for
protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for pro-
tocol version 2. Identity files may also be specified on a per-
Host basis in the configuration file. It is possible to have
multiple -i options (and multiple identities specified in config-
uration files).
Toto je pro soukromý klíč. Nyní musíte na Server 2 představit svůj veřejný klíč. Znovu nabídku z man ssh
:
~/.ssh/authorized_keys
Lists the public keys (RSA/DSA) that can be used for logging in
as this user. The format of this file is described in the
sshd(8) manual page. This file is not highly sensitive, but the
recommended permissions are read/write for the user, and not
accessible by others.
Nejjednodušší způsob, jak dosáhnout, je zkopírovat soubor na server 2 a připojit jej k souboru autorizované_keys:
scp -p your_pub_key.pub [email protected]:
ssh [email protected]
host$ cat id_dsa.pub >> ~/.ssh/authorized_keys
Pro ssh démona musí být povolena autorizace pomocí veřejného klíče, viz man ssh_config
. Obvykle to lze provést přidáním následujícího příkazu do konfiguračního souboru:
PubkeyAuthentication yes
Použil jsem ssh s -i možnost přidat váš klíč zde.
Pokud chcete předat arg1, arg2 se souborem .sh, předejte jej za soubor .sh a oddělte jej pomocí mezer.
ssh -i home/avr/new.pem [email protected] "/var/www/beta/betatolive.sh mmin 30"
První věc, kterou musíte udělat, je ujistit se, že jste spustili příkaz keygen pro vygenerování klíčů:
ssh-keygen -t rsa
Potom pomocí tohoto příkazu posuňte klíč na vzdálený server a upravte jej tak, aby odpovídal názvu vašeho serveru.
cat ~/.ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
Připojte veřejný klíč (id_[rd]sa.pub
) pro váš zdrojový stroj (odkud sshing) do ~/.ssh/authorized_keys
soubor cílového serveru pro uživatelské jméno, do kterého chcete ssh. Pokud jste ztratili veřejný klíč, budete chtít vytvořit nový klíč s ssh-keygen
. Použití výchozích argumentů by mělo být pro většinu účelů v pořádku. Pokud potřebujete podrobnější pokyny, existují tisíce výukových programů, které můžete google.
ssh-copy-id - použijte lokálně dostupné klíče k autorizaci přihlášení na vzdáleném počítači
Použijte ssh-copy-id
na serveru 1, za předpokladu, že máte pár klíčů (vygenerovaný pomocí ssh-keygen
):
ssh-copy-id -i ~/.ssh/id_rsa [email protected]_hostname
Nyní byste měli mít možnost ssh na server 2 pomocí ssh pomocí soukromého klíče
ssh -i ~/.ssh/id_rsa [email protected]_hostname
Opravdu, pokud zaškrtnete cat ~/.ssh/authorized_keys
na serveru 2 uvidíte veřejný klíč, který je k vám připojen.