Генерирование ключей
Многие сервисы работают с SSH при помощи открытого ключа. Для этого его нужно сгенерировать, если его у вас еще нет, иначе он может перезаписаться и вы потеряете доступ к ресурсам которые уже знали ваш открытый ключ. Проверяем наличие ключа, обычно он хранится в домашней директории в папке ~/.ssh
:
$ cd ~/.ssh $ ls
У вас должно быть как минимум два файла "что-нибудь" и "что-нибудь.pub", где "что-нибудь" — обычно id_dsa
или id_rsa
, в моем случае это id_rsa
и id_rsa.pub
. Если же у вас нет таких файлов или вообще нет папки .ssh, их можно создать при помощи ssh-keygen
, которая входит в состав пакета SSH в системах Linux/Mac, а также поставляется в составе MSysGit для Windows. Создаем SSH ключ:
$ biperch@biperch-desktop:~/.ssh$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/biperch/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/biperch/.ssh/id_rsa. Your public key has been saved in /home/biperch/.ssh/id_rsa.pub. The key fingerprint is: 82:b4:26:26:c8:b9:e4:1d:4f:11:fd:71:96:40:75:bb biperch@biperch-desktop The key's randomart image is: +--[ RSA 2048]----+ | .. .oo... | | .. . +. . | | .. . + . | |o .. o. . . | |o+o.+.. S E | |oooo+ . | | o . . | | | | | +-----------------+
Сначала у нас запрашивается директория в которой будет лежать id_rsa
ключ, если вас устраивает стандартное расположение, достаточно нажать Enter. Далее запрашивается пароль и подтверждение пароля, если вы не хотите при каждом использовании ключа вводить пароль нажмите Enter два раза.
Теперь вы можете обмениваться публичными ключами, и подключится друг к другу по SSH не вводя пароль. Для этого вам нужно скопировать содержимое id_rsa.pub
и отправить нужному пользователю. Ключ выглядит примерно так:
Скопировать публичный ключ в буфер обмена можно простой командой:
xclip -sel clip < ~/.ssh/id_rsa.pub
Добавление SSH ключа в github.com
Получаем свой публичный ключ, копиру его из ~/.ssh/id_rsa.pub, и размещаем его в своих настройках на github.com
Заходим в настройки:
Заходим на вкладку ключей и добавляем новый SSH ключ:
Вводим название ключа, что бы знать откуда ключ, и в случае чего удалить его:
После чего у нас запросят пароль для подтверждения и в итоге мы получаем добавленный ключ.
Добавление SSH ключа в bitbucket.org
Здесь все очень схоже с github, заходим в настройки:Выбираем пункт меню SSH ключи:
Добавляем ключ:
Вводим название и сам ключ:
Нажимаем добавить ключ и все готово.
Добавление SSH ключа на сервер
Что бы подключатся к серверу без паролей и головняка, нужно добавить на сервер наш публичный ключ.
1-й способ
Используем ssh-copy-id маленькая тулза для копирования ключей на удаленный сервер.
Заходим в директорию с ключами ~/.ssh и выполняем перенос:
$cd .ssh $ssh-copy-id -i id_rsa.pub user@server.com user@server.com password:
Где, user - имя удаленного пользователя (для логина), server.com - домен или IP адрес удаленного сервера. Нас попросят подтвердить пароль к пользователю user, далее ключ заносится в ~/.ssh/authorized_keys на стороне сервера. И нам открывается доступ на сервер по SSH без пароля. Зайти по SSH на сервер можно с помощью простой команды:
$ ssh user@server.com
2-й способ
$ cat ~/.ssh/id_rsa.pub | ssh user@server.com 'cat >> ~/.ssh/authorized_keys'
Где, user - имя удаленного пользователя (для логина), server.com - домен или IP адрес удаленного сервера. Каталог ~/.ssh при этом должен существовать, если его нет, нужно создать заранее и поставить на него правильные права доступа. Создаем:
remotehost$ mkdir ~/.ssh remotehost$ chown -R user:user ~/.ssh/ remotehost$ chmod 700 ~/.ssh/
А далее подключаемся по SSH:
$ ssh user@server.com
Создание алиасов для SSH
Если вы имеете один или более серверов, то вам для подключения к нему нужно вводить ssh user@домен
, но бывают случаи когда домены длинные или сложные и их все время нужно откуда то копировать (ssh ivanov_i@wf-MX-i3.extrt.int.company.net). Или у вас много серверов и всех не упомнишь, для этого есть алиасы, которые нас спасут. Алиасы живут в файле ~/.ssh/config и выглядит этот файл примерно так:
ost ric Hostname очень-длинное-имя-домена.доменная зона User Администратор ForwardX11 yes Compression yes Host home Hostname myhome.dyndns.org User vasya PasswordAuthentication no
Используя алиасы мы получаем возможность использовать суровый синтаксис)))):
$ ssh ric
И подключаемся к очень-длинное-имя-домена.доменная зона пользователем Администратор.
Дополнительно
SSH может выполнить команду на удалённом сервере и тут же закрыть соединение. Простейший пример:
ssh user@server ls /etc/
Выведет содержимое каталога etc.
Копирование файлов через SSH туда - сюда соответственно)):
#туда $ scp path/myfile user@8.8.8.8:/full/path/to/new/location/ #сюда
$ scp user@8.8.8.8:/full/path/to/file /path/to/put/here
И на последок вот вам картинка:
Комментарии
Зачетная картинка, я так понимаю рыба - это SSH
Ответитьсовершенно верно)))))
ОтветитьСпасибо пригодилось
ОтветитьОтлично, прогодилось. Но при выполнении команды копирования на сервер ssh ключа
Новый ключ вставился в конец уже существующего и авторизация не работала, пришлось заходить на сервер и править файл ~/.ssh/authorized_keys, т.е. добавить перевод строки в нужном месте. После чего все заработалоОтветить
Добавил еще один ключ, все ок, теперь он добавился с новой строки и заработал сразу
ОтветитьСкопировать публичный ключ в буфер обмена можно простой командой:
Если ее нет, то можно установить с пмощью команды:
Ответить