Secure Shell учебник
Начало работы с Secure Shell
Поиск…
замечания
SSH (Secure Shell) - это криптографический протокол для двухточечной связи по небезопасной сети (Интернет). Он устаревает старых протоколов, используемых в старые времена ( rlogin , rsh , telnet ).
Он обычно используется для подключения к удаленным серверам, виртуальным машинам или контейнерам в центре обработки данных или в вашем частном облаке (Google Compute Engine, AWS, ...). Но он также широко используется совместно с git для безопасного и безопасного доступа к вашему хранилищу и с использованием открытых ключей вместо паролей.
Следует также упомянуть любые крупные темы в ssh и ссылки на связанные темы. Поскольку документация для ssh является новой, вам может потребоваться создать начальные версии этих связанных тем. СДЕЛАТЬ
Версии
| Версия | Примечания к выпуску | Дата выхода |
|---|---|---|
| OpenSSH 7.3p1 | Последняя версия | 2016-08-01 |
| OpenSSH 7.2p2 | 2016-03-09 | |
| OpenSSH 7.1p2 | 2016-01-14 | |
| OpenSSH 7.1 | 2015-08-21 | |
| OpenSSH 7.0 | 2015-11-08 | |
| OpenSSH 6.9 | 2015-07-01 | |
| OpenSSH 6.8 | 2015-03-18 |
Установка или настройка
Бесплатная версия реализации протокола SSH, OpenSSH доступна во всех дистрибутивах Linux. Он состоит из серверных и клиентских пакетов.
Монтаж
В Debian на базе Linux вы можете установить openssh используя
# apt-get install openssh-server openssh-client
В RHEL / CentOS вам нужно использовать yum :
# yum install openssh-server openssh-clients
Текущая Fedora использует dnf вместо yum .
В Arch Linux используйте pacman:
# pacman -S openssh
В OSX openssh должен быть уже установлен.
Если вы хотите использовать более новую версию, вам нужно установить openssh из заваривания:
# brew install openssh --with-brewed-openssl --with-keychain-support
Инструкции TODO для Windows
Настроить
Клиент openssh не нуждается в специальной настройке и готов к использованию сразу после установки. Вы можете попробовать запустить ssh remote , где remote - это удаленный хост, на котором запущен ssh сервер.
Сервер openssh обычно запускается после установки и установки по умолчанию. Если нет, то вы можете запустить его на systemd систем на основе использования
В Debian на базе Linux с systemd:
# systemctl start ssh
На RHEL / CentOS / Fedora и Arch Linux:
# systemctl start sshd
Или при использовании систем выскочек
# service sshd start
конфигурация
У openssh есть файлы конфигурации в /etc/ssh/ . Клиент также считывает конфигурацию клиента в файле ~/.ssh/config . Сервер использует файл sshd_config , который содержит большинство значений по умолчанию и содержит простые пары ключ-значение. Пример:
Protocol 2
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY
X11Forwarding yes
Subsystem sftp /usr/libexec/openssh/sftp-server
Создание ключа SSH
Вы можете создать свой ssh-ключ, используя ssh-keygen, это программа, которая является частью установки ssh. Для этого просто запустите его и следуйте инструкциям на экране.
Вот пример:
$ ssh-keygen
Generating public/private rsa key pair.
Каталог по умолчанию, в котором будет сохранена пара ключей ssh, находится внутри папки .ssh в вашем домашнем каталоге (вы можете изменить это, указав допустимый путь), а по умолчанию для ключевой id_rsa.pub - id_rsa для закрытого ключа и id_rsa.pub для открытый ключ:
Enter file in which to save the key (/home/nasreddine/.ssh/id_rsa): /home/my_folder/my_ssh_key
Вы можете защитить свой SSH-ключ от несанкционированного использования, введя пароль. Это необязательно, но рекомендуется использовать кодовую фразу. Обратите внимание, что, как и в любой другой командной программе, при вводе вашей кодовой фразы он ничего не отображает на экране, но записывается:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
После ввода вашей кодовой фразы ssh-keygen сгенерирует ключ и сохранит его до выбранного вами пути:
Your identification has been saved in /home/my_folder/my_ssh_key.
Your public key has been saved in /home/my_folder/my_ssh_key.pub.
Были сделаны. Теперь наш ключ ssh готов к использованию.
Как SSH в машину
Чтобы войти в учетную запись пользователя на компьютере с SSH, вы можете использовать команду ssh username@ip_address . Он попросит пароль. Если вы введете правильный пароль, вы будете подключены к оболочке этого пользователя на этом компьютере. В противном случае он снова запросит пароль.
Например
root@dev10:~# ssh [email protected]
[email protected]'s password:
Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-31-generic x86_64)
Last login: Fri Jul 22 18:33:27 2016 from 10.11.50.10
root@dev2:~#
Если вы хотите использовать конкретный ключ ssh для подключения к машине, используйте ssh -i /path/to/ssh_secret_key username@host
Когда вы впервые подключаетесь к машине, он попросит вас проверить отпечаток на целевой машине. Это механизм безопасности для предотвращения атаки «человек-в-середине» . Вы можете увидеть отпечаток целевого компьютера, выполнив эту команду на целевой машине.
ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ecdsa_key.pub
Вы можете ввести «да», если оба они одинаковы. Он перейдет к приглашению пароля.
Пример:
root@dev10:~# ssh [email protected]
The authenticity of host '10.11.50.3 (10.11.50.3)' can't be established.
ECDSA key fingerprint is dd:a3:de:cd:5b:01:cd:0b:b6:bc:b3:09:c2:c8:1a:68.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.11.50.3' (ECDSA) to the list of known hosts.
[email protected]'s password:
Last login: Fri Jul 22 17:45:09 2016 from 10.11.1.71
root@dev2:~#
Добавление открытого ключа в список авторизованных ключей сервера
Чтобы ssh на сервер, открытый ключ вашей личности должен быть добавлен в список доверенных ключей. Чаще всего это делается для каждого пользователя:
ssh-copy-id -i ~/.ssh/<identity>.pub <user>@<hostname>
Что также можно сделать вручную:
cat ~/.ssh/<identity>.pub | ssh <user>@<hostname> 'cat >> ~/.ssh/authorized_keys'
После этого вы должны иметь возможность входа в систему без необходимости предоставлять пароль пользователя при передаче файла идентификации в ssh вызов.
Подключение к скрипту с использованием пароля
Когда вам действительно нужно подключить ssh соединение, соединение пароля с командой ssh не работает ( echo passw0rd | ssh host ). Это связано с тем, что пароль не считывается со стандартного ввода, а непосредственно из TTY (телепринтер, телетайп, Teletype по историческим причинам).
Но есть инструмент sshpass , который работает вокруг этой проблемы. Он может считывать пароль из переменной параметра, файла или среды. Но учтите, что ни один из этих вариантов не отвечает требованиям безопасности для паролей!
$ sshpass -p passw0rd ssh host
$ sshpass -f /secret/filename ssh host
$ SSHPASS=passw0rd sshpass -e ssh host
Параметры командной строки могут видеть другие пользователи в ps (во время выполнения она маскируется, но не во время запуска, и вы не можете положиться на нее):
... 23624 6216 pts/5 Ss Aug30 0:00 \_ /bin/bash
... 12812 1988 pts/5 S+ 08:50 0:00 | \_ sshpass -p passw0rd ssh host
... 45008 5796 pts/15 Ss+ 08:50 0:00 | \_ ssh host
Обратите внимание, что переменные среды окружения процесса также доступны для других процессов в системе с использованием файла /proc/PID/environ .
Наконец, сохранение пароля в файле может показаться наилучшей идеей, но использование ключей, как описано в других примерах, является предпочтительным способом использования ssh .
Файл конфигурации
Конфигурационные файлы OpenSSH используются для конфигурации, которые должны применяться каждый раз при запуске клиента ssh. Большинство параметров командной строки можно вставить в файлы конфигурации.
OpenSSH использует конфигурацию из следующих источников:
- Параметры командной строки
- Конфигурационный файл пользователя
~/.ssh/config - Системный файл конфигурации
/etc/ssh/ssh_config
Параметры конфигурации перечислены один за другим в конфигурационных файлах.
# This is a comment.
# Parameter can be specified like this, separated with white space.
StrictHostKeyChecking ask
# Or parameter key and value may be separated with white space and =.
ForwardX11 = yes
# The parameter value can be quoted if it contains white space.
IdentityFile "/file system/path with/white space"
Полный список возможных параметров конфигурации доступен здесь .
Одной из наиболее полезных функций конфигурационного файла является его разделение на основе имени или адреса хоста. Таким образом, у вас могут быть разные конфигурации для разных хостов.
# Based on host name.
Host host1.domain.com
User user1
Host host2.domain.com
User user2
# Or wildcard matching name or ip.
Host *elastic-cloud.com 10.201.4.?
User user3
SSH-агент
Если вы задали длинную кодовую фразу и не хотите вводить ее каждый раз, когда хотите подключиться к серверу, вы можете использовать SSH-Agent для хранения вашей кодовой фразы во время входа на ваш компьютер.
Запустите ssh-agent в фоновом режиме:
eval "$(ssh-agent -s)"
# Agent pid 59566
И добавьте свой ключ в ssh-agent, вам будет предложено ввести вашу кодовую фразу:
ssh-add ~/.ssh/matrix.ac
# Enter passphrase for /home/osaka/.ssh/matrix.ac:
# Identity added: /home/osaka/.ssh/matrix.ac (/home/osaka/.ssh/matrix.ac)
Готово. Теперь подключитесь к ssh [email protected] и вам не нужно вводить кодовую фразу. Вы можете расширить его, используя такие программы, как gnome-keyring / seahorse, keychain и другие ключевые менеджеры.
