Я хочу использовать команду 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 на машине, к которой вы хотите подключиться.
локальный> пользователь ssh @ удаленный
удаленный> vi ~ / .ssh / 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)
Отличный сценарий!
Ура, ру