OpenSSH мини-руководство

Материал из OpenBSD-Wiki
Перейти к: навигация, поиск
Данная статья 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