SSH Remote-Server an einem anderen Port als 22 ohne Passwort

16

Normalerweise verbinde ich mich mit dem Remote-Server

ssh [email protected] -p 11000

und dann geben Sie das Passwort jedes Mal für den Benutzer. Wie vermeide ich die Eingabe des Passworts bei jeder Verbindung mit ssh?

Prabesh Shrestha
quelle

Antworten:

23

Zuerst geben Sie Folgendes ein ~/.ssh/config:

Host server
HostName server.com
Port 11000
User user

Sie können ssh serverdann das Passwort eingeben.

Zweitens , überprüfen Sie in , ~/.ssh/um zu sehen , wenn Sie Dateien mit dem Namen id_rsaund id_rsa.pub. Wenn nicht, haben Sie keinen Schlüssel eingerichtet, sodass Sie ein Paar mit generieren müssen ssh-keygen. Sie können den Schlüsseln ein Passwort geben oder nicht. Die generierte Datei id_rsa.pubsollte folgendermaßen aussehen:

ssh-rsa lotsofrandomtext user @ local

Drittens , ssh an den Server, erstelle die Datei, ~/.ssh/authorized_keyswenn sie nicht existiert. Fügen Sie dann hier den Inhalt des ~/.ssh/id_rsa.pubzuvor generierten hinzu. Dies kann bedeuten, dass Sie den Dateiinhalt in Ihre Zwischenablage kopieren, dann ~/.ssh/authorized_keysin einem Texteditor öffnen und das Objekt einfügen.

Alternativ können Sie den Befehl verwenden ssh-copy-id server(durch serverden Namen in ersetzen ~/.ssh/config). Dies macht dasselbe wie oben. Manchmal habe ich gesehen ssh-copy-id, wie ich feststeckte, also mag ich es nicht wirklich.

Sie sollten jetzt in der Lage sein, mit just zu sshen ssh server, es sei denn, Sie möchten Ihren privaten Schlüssel mit einer Passphrase schützen. Wenn Sie keine Passphrase verwenden, sollten Sie Ihren privaten Schlüssel im Allgemeinen auf andere Weise schützen (z. B. durch vollständige Festplattenverschlüsselung).

Viertens (nur erforderlich, wenn Sie Ihren privaten Schlüssel mit einer Passphrase schützen), geben Sie Folgendes ein~/.bashrc :

start_ssh_agent() {
    # Try to use an existing agent
    save=~/.ssh-agent
    if [[ -e "$save" ]]
    then
        . "$save" > /dev/null
    fi
    # No existing agent, start a new one
    if [[ -z "$SSH_AGENT_PID" || ! -e "/proc/$SSH_AGENT_PID" ]]
    then
        ssh-agent > "$save"
        . "$save" > /dev/null
        ssh-add
    fi
}
start_ssh_agent

In diesem Fall müssen Sie die Passphrase nur einmal pro Computer-Start eingeben.

phunehehe
quelle
2
Die "Erzählung" sollte auch eine Diskussion darüber enthalten, wie man vermeiden kann, diese lästige Passphrase die ganze Zeit zu tippen. :-) ssh-agent und / oder keychain sind zu erwägende Möglichkeiten.
Faheem Mitha
1
Wenn Ihr Benutzername auf dem Remote-Host nicht mit Ihrem Benutzernamen auf dem lokalen Host übereinstimmt, können Sie eine User userZeile hinzufügen ~/.ssh/config.
cjm
@Faheem Das ist nett, aber ich habe so etwas noch nie eingerichtet, also glaube ich nicht, dass ich in der Lage bin, andere darüber zu unterrichten :)
phunehehe
@FaheemMitha los gehts :)
phunehehe
Hey, besser spät als nie.
Faheem Mitha
7

Wenden Sie sich an die schlüsselbasierte Authentifizierung .

9000
quelle
danke für den vorschlag. Ich habe in den Foren nachgesehen, hatte aber Probleme mit dem Port ( 11000 statt 22 ). Mit konnte ssh -P 11000ich mit ssh kopieren. Danke vielmals.
Prabesh Shrestha
4

Ergänzend zu der Antwort von phunehehe finden Sie im Gentoo Linux Keychain Guide eine Anleitung zum Schlüsselbund . Schlüsselbund verwendet auch ssh-agent . Der ssh-agent-Daemon stellt die Passphrase zur Verfügung (sie wird nicht mehr verfügbar, wenn der ssh-agent-Daemon stirbt) reuses an ssh-agent between logins, and optionally prompts for passphrases each time the user logs in.

Faheem Mitha
quelle