На строне клиента создаём директорию для хранения ключей:
$ mkdir ~/.ssh
Устанавливам права на чтение только владельцу:
$ chmod 700 .ssh/
Создаём пару private/public ключей:
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/setevoy/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/setevoy/.ssh/id_rsa. Your public key has been saved in /home/setevoy/.ssh/id_rsa.pub. The key fingerprint is: 8c:8f:68:eb:60:95:5a:c5:70:e5:f6:06:26:5b:c9:a2 [email protected] The key's randomart image is: +--[ RSA 2048]----+ | . ... | | + o . | | = O | | + X o | | E o S o | | + . o . | | + o . . | | . o . | | .o | +-----------------+
По сути – это один ключ, имеющий две части: id_rsa
– это ваш private ключ, который никому не должен передаваться, а id_rsa.pub
– его публичная часть, используемая удалённым сервером для вашей авторизаци.
Проверяем:
$ ls -l .ssh/ total 8 -rw-------. 1 setevoy setevoy 1675 Jan 29 12:06 id_rsa -rw-r--r--. 1 setevoy setevoy 410 Jan 29 12:06 id_rsa.pub
Устанавливаем права только чтение на файл id_rsa.pub
:
$ chmod 600 .ssh/id_rsa.pub
На стороне сервера, к которому мы будем подключаться создаём диреткорию .ssh
и файл authorized_keys
, в котором будет храниться public-часть ключа клиента:
$ mkdir .ssh/
$ chmod 700 .ssh/
На строне клиента копируем public-часть ключа (id_rsa.pub
) на сервер в файл authorized_keys
с помощью утилиты ssh-copy-id
:
$ ssh-copy-id setevoy@10.***.***.239 setevoy@10.***.***.239's password: Now try logging into the machine, with "ssh 'setevoy@10.***.***.239'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting.
Можно просто скопировать вручную содержимое файла .ssh/id_rsa.pub
на стороне клиента, и добавить его в файл .ssh/authorized_keys
на сервере, к которому будем подключаться.
Проверяем подключение:
$ ssh setevoy@10.***.***.239 Last login: Mon Mar 31 16:58:04 2014 from user.domain.com
SSH работает.
Проверяем sftp
:
$ sftp setevoy@10.***.***.239 Connecting to 10.***.***.239... sftp>
Авторизация работает.
Выходим по Ctrl+D.
Копируем файл с удалённого сервера на локальную машину:
$ sftp setevoy@10.***.***.239:testfile . Connecting to 10.***.***.239... Fetching /home/setevoy/testfile to ./testfile
Что бы загрузить локальный файл на удалённую машину:
$ sftp setevoy@10.***.***.239 Connecting to 10.***.***.239... sftp> put testfile Uploading testfile to /home/setevoy/testfile testfile 100% 0 0.0KB/s 00:00