Ich habe zwei Server. Beide Server sind in CentOS 5.6. Ich möchte mit meinem privaten Schlüssel (OpenSSH SSH-2 Private Key) von Server 1 auf Server 2 SSH durchführen.
Ich weiß nicht, wie ich das mit Unix machen soll. Unter Windows mit Putty habe ich meinen privaten OpenSSH-Schlüssel an putty-gen übergeben und einen privaten Schlüssel im PPK-Format generiert.
Ich würde jedoch ein Bash-Skript von Server 1 erstellen, das einige Befehle auf Server 2 über SSH ausführt.
Wie kann ich mit meiner privaten Schlüsseldatei von Server 1 eine SSH-Verbindung zu Server 2 herstellen?
ssh-copy-id user@machine
Antworten:
Sie benötigen Ihren öffentlichen SSH-Schlüssel und Ihren privaten SSH-Schlüssel. Schlüssel können mit erzeugt werden
ssh_keygen
. Der private Schlüssel muss auf Server 1 und der öffentliche Schlüssel auf Server 2 gespeichert sein.Dies wird vollständig in der Manpage von openssh beschrieben, daher werde ich viel davon zitieren. Sie sollten den Abschnitt 'Authentifizierung' lesen. Auch das openSSH-Handbuch sollte wirklich hilfreich sein: http://www.openssh.org/manual.html
Bitte seien Sie vorsichtig mit ssh, da dies die Sicherheit Ihres Servers beeinträchtigt.
Von
man ssh
:Dies bedeutet, dass Sie Ihren privaten Schlüssel in Ihrem Home-Verzeichnis in .ssh speichern können. Eine andere Möglichkeit besteht darin, ssh über den
-i
Parameterschalter anzuweisen, eine spezielle Identitätsdatei zu verwenden. Auch vonman ssh
:Dies ist für den privaten Schlüssel. Jetzt müssen Sie Ihren öffentlichen Schlüssel auf Server 2 einführen. Wieder ein Zitat von
man ssh
:Am einfachsten erreichen Sie dies, indem Sie die Datei auf Server 2 kopieren und an die Datei authorized_keys anhängen:
Die Autorisierung über den öffentlichen Schlüssel muss für den ssh-Daemon erlaubt sein, siehe
man ssh_config
. Normalerweise kann dies durch Hinzufügen der folgenden Anweisung zur Konfigurationsdatei erreicht werden:quelle
ssh -i keyfile
Vielen Dank!ssh-copy-id
:ssh-copy-id -i ~/.ssh/foo.id_rsa remote.example.com
.ssh-add
nachdem Sie einen Schlüssel auf dem Computer erstellt haben, von dem aus Sie eine Verbindung herstellen. Das ist es, was den meisten Menschen Kopfschmerzen bereitet.$ ssh -i ~/.ssh/id_rsa [email protected]
, wird der Fehler[email protected]: Permission denied (publickey).
angezeigt, dass der Schlüssel erstellt, lokal mithilfe vonssh-add
hinzugefügt und als autorisierter Schlüssel auf dem Remoteserver hinzugefügt wurde.Ich habe ssh mit der Option -i verwendet, um Ihren Schlüssel hier hinzuzufügen.
Wenn Sie arg1, arg2 mit .sh-Datei übergeben möchten, übergeben Sie es einfach nach der .sh-Datei und verwenden Sie ein Leerzeichen, um es zu trennen.
ssh -i home/avr/new.pem [email protected] "/var/www/beta/betatolive.sh mmin 30"
quelle
chmod 600 home/avr/new.pem
Als Erstes müssen Sie sicherstellen, dass Sie den Befehl keygen ausgeführt haben, um die Schlüssel zu generieren:
Verwenden Sie dann diesen Befehl, um den Schlüssel an den Remote-Server zu senden, und ändern Sie ihn so, dass er Ihrem Servernamen entspricht.
quelle
ssh-copy-id user@hostname
stattdessen anHängen Sie den öffentlichen Schlüssel (
id_[rd]sa.pub
) für Ihren Quellcomputer (von dem aus Sie senden) an die~/.ssh/authorized_keys
Datei des Zielservers für den Benutzernamen an, in den Sie senden möchten. Wenn Sie den öffentlichen Schlüssel verloren haben, möchten Sie einen neuen mit erstellenssh-keygen
. Die Verwendung der Standardargumente sollte für die meisten Zwecke in Ordnung sein. Wenn Sie detailliertere Anweisungen benötigen, gibt es Tausende von Tutorials, die Sie googeln können.quelle
Verwenden Sie
ssh-copy-id
auf Server 1, vorausgesetzt , Sie sind das Schlüsselpaar haben (erzeugt mitssh-keygen
):Jetzt sollten Sie in der Lage sein, mit ssh unter Verwendung des privaten Schlüssels in Server 2 zu ssh zu gelangen
Wenn Sie
cat ~/.ssh/authorized_keys
Server 2 aktivieren, wird der öffentliche Schlüssel an Sie angehängt.quelle