Назад | Перейти на главную страницу

Как установить соединение между двумя компьютерами с помощью ssh-keygen

Я хочу использовать команду rsync между двумя компьютерами, и на обоих из них есть RedHat 5.3, когда я искал способ сделать это в googledd, я обнаружил, что мне нужно сделать открытый ключ между ними, чтобы не запрашивать пароль, когда я использую команду rsync. Как лучше всего получить открытый ключ и заставить rsync работать безупречно.

Примечание: я следил за многими учебниками и не нашел authorized_keys (в /root/.ssh/). Я нашел файл известных хостов.

На машине, с которой вы хотите подключиться, должна быть создана пара открытого / закрытого ключей, а затем открытый ключ необходимо скопировать на машину, к которой вы хотите подключиться. Для этого объяснения позвольте вызвать машину, с которой вы хотите подключиться. местный и машина, к которой вы хотите подключиться удаленный.

Шаг 1. Создайте пару ключей на локальном

> ssh-keygen -t dsa

Эта команда создаст id_dsa и id_dsa.pub в вашей домашней папке, то есть ~ / .ssh / id_dsa и ~ / .ssh / id_dsa.pub

Шаг 2 - Добавьте открытый ключ в файл authorized_keys на машине, к которой вы хотите подключиться.

  1. скопируйте содержимое ~ / .ssh / id_dsa.pub на локальный компьютер в буфер обмена
  2. открыть сеанс ssh для удаленного

локальный> пользователь ssh @ удаленный

  1. открыть файл authorized_keys для редактирования, создавая, если он не существует

удаленный> vi ~ / .ssh / authorized_keys

  1. Если файл пуст, нажмите i, затем вставьте содержимое буфера обмена в файл. Если в файле есть записи, используйте клавиши со стрелками для перехода вниз, затем нажмите i и вставьте содержимое буфера обмена.
  2. сохраните файл, набрав: wq
  3. изменить разрешения для файла authorized_keys

    удаленный> chmod 600 ~ / .ssh / authorized_keys

Теперь вы должны иметь возможность подключиться к удаленному компьютеру с помощью ключа.

local> ssh user@remote

Если вы хотите использовать ssh с ключами, первое, что вам понадобится, это ключ.
создание ключа с использованием шифрования dsa (или заменить dsa на rsa для шифрования rsa)


$ ssh-keygen -t dsa
When asked for a "passphrase", we won't enter one. Just press enter twice. The ssh-keygen program will now generate both your public and your private key, by default, your keys are stored in the .ssh/ directory in your home directory.

Чтобы иметь возможность входить в удаленные системы с помощью вашей пары ключей, вам сначала необходимо добавить свой открытый ключ на удаленном сервере в файл authorized_keys в каталоге .ssh / вашего домашнего каталога на удаленном компьютере.


$ cd ~/.ssh; scp id_dsa.pub username@target:./id_dsa.pub
$ ssh username@target 
$ mkdir ~/.ssh; chmod 700 ~/.ssh
$ cat id_dsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ rm -fr id_dsa.pub
You can now ssh to the remote systems's account without the use of a password.

Поскольку это такая распространенная задача, я создал сценарий оболочки, который справится с ней за меня. Это создаст локальную пару ключей SSH, если она еще не существует, а затем скопирует ее на удаленный компьютер.

#!/bin/bash

keytype="rsa"
while getopts "t:" opt; do
    case $opt in
        "t")
            keytype=$OPTARG;;
    esac
done
shift $(($OPTIND - 1))

if [[ $# != 1 ]]; then
    echo "Usage: $0 [-t rsa|dsa] [user]@host"
    exit
fi

KEYFILE=~/.ssh/id_$keytype
AUTHFILE=.ssh/authorized_keys

if [[ ! -e $KEYFILE ]]; then
    echo "Creating key..."
    ssh-keygen -t $keytype -f $KEYFILE
fi
if [[ -e $KEYFILE ]]; then
    echo "Logging in..."
    ssh $1 "[[ -d .ssh ]] || mkdir .ssh && [[ -e $AUTHFILE ]] || touch $AUTHFILE && chmod 0600 $AUTHFILE && cat - >> $AUTHFILE" < $KEYFILE.pub
fi

Последний ssh команду можно заменить на ssh-copy-id. Я этого не сделал, потому что написал программу до того, как узнал о ssh-copy-id и мне это всегда удавалось.

Если порт 22 не используется для ssh, измените эту строку: ssh $ 1 "[[-d .ssh]] ... на ssh '-p 3433' $ 1" [[-d .ssh]] ... (замените 3433 на ваш идентификатор порта ssh)

Отличный сценарий!

Ура, ру