OpenSSH мини-руководство
Версия от 17:07, 14 июня 2013; Nordwind (обсуждение | вклад)
- Данная статья 100 % копипаст с www.openbsd.ru
Мини-руководство «шаг за шагом»
Генерируем пару ключей (секретный и публичный):
% ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/andrushock/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/andrushock/.ssh/id_rsa. Your public key has been saved in /home/andrushock/.ssh/id_rsa.pub. The key fingerprint is: 25:95:5b: a6:d7:26:b6:f5:f9:a7:49:d4:a8:2a:0d:7d andrushock@midian
Проверяем корректность прав доступа к директории .ssh и RSA-ключам:
% ls -la .ssh | egrep -v 'total|\.\.' drwx------ 2 andrushock wsrc 512 Oct 19 20:42 ./ -rw------- 1 andrushock wsrc 1743 Jun 11 03:35 id_rsa -rw-r--r-- 1 andrushock wsrc 413 Jun 11 03:35 id_rsa.pub
Добавляем публичный ключ в список авторизованных ключей на удаленной системе:
% ssh user@host «cat >> .ssh/authorized_keys» < .ssh/id_rsa.pub
В случае, если подкаталог .ssh и файл .ssh/authorized_keys на удаленной системе не существуют:
% ssh user@host «mkdir -m 700 .ssh; umask 077; cat > .ssh/authorized_keys» < .ssh/id_rsa.pub
Для сохранения парольных фраз к приватным ключам запускаем ssh-agent(1):
% eval `/usr/bin/ssh-agent` Agent pid 3855
С помощью ssh-add(1) добавляем в память агента парольную фразу от нашего ключа:
% ssh-add Enter passphrase for /home/andrushock/.ssh/id_rsa: Identity added: /home/andrushock/.ssh/id_rsa (/home/andrushock/.ssh/id_rsa)
Для проверки просматриваем отпечаток секретного ключа:
% ssh-add -l 2048 25:95:5b: a6:d7:26:b6:f5:f9:a7:49:d4:a8:2a:0d:7d /home/andrushock/.ssh/id_rsa (RSA)
Выполняем вход на удаленный сервер без ввода пароля и парольной фразы:
% ssh user@host OpenBSD 3.7-current (GENERIC) #1: Mon Aug 1 00:37:53 MSD 2005 Welcome to OpenBSD: The proactively secure Unix-like operating system. $
Пример использования функций оболочки для упрощения беспарольной аутентификации:
% vi .profile
ssh_agent_start() {
id1=$HOME/.ssh/identity
id2=$HOME/.ssh/id_dsa
id3=$HOME/.ssh/id_rsa
if [ ! «$SSH_AGENT_PID» ] && [ -f $id1 -o -f $id2 -o -f $id3 ]; then
eval `/usr/bin/ssh-agent -s`
/usr/bin/ssh-add < /dev/null
export SSH_AGENT_SHELL=$$
fi
}
ssh_agent_stop() {
if [ «$SSH_AGENT_PID» -a "$SSH_AGENT_SHELL"x = "$$"x ]; then
/usr/bin/ssh-add -D < /dev/null
eval `/usr/bin/ssh-agent -sk`
fi
}
ssh_agent_start
trap ssh_agent_stop 0 1