Работа с удаленными хостами через SSH: подключение, передача файлов.
Life-Hack - Linux/Хакинг/Хакер/ИБ/OsintSSH - (Secure Shell) - это протокол удаленного управления компьютером с операционной системой Linux. В основном ssh используется для удаленного управления серверами через терминал. Если вы администратор нескольких серверов или даже продвинутый веб-мастер, то наверное, вы часто сталкиваетесь с необходимостью работать с тем или иным компьютером по ssh.
Данный протокол шифрует всю передаваемую информацию по сети. По умолчанию, используется 22-й порт. В основном он нужен для удаленного управления данными пользователя на сервере, запуска служебных команд, работы в консольном режиме с базами данных.
Эта служба была создана в качестве замены не зашифрованному Telnet и использует криптографические техники, чтобы обеспечить, что всё сообщение между сервером и пользователем было зашифровано.
Чтобы установить SSH-соединение, необходимы два компонента: SSH-сервер и SSH-клиент. Сервер прослушивает определенный порт (по умолчанию это порт 22) и при успешной аутентификации дает доступ пользователю. Все команды, которые используются на SSH-клиенте, отправляются через защищенный канал связи на SSH-сервер, на котором они выполняются и откуда отправляют результат работы обратно клиенту.
В общем видео подключение по ssh имеет вид:
ssh имя_пользователя@ip_адрес_компьютера_к_которому_подключаемся -p порт
Теперь давайте рассмотрим самые основные опции команды ssh:
f - перевести ssh в фоновый режим;
g - разрешить удаленным машинам обращаться к локальным портам;
l - имя пользователя в системе;
n - перенаправить стандартный вывод в /dev/null;
p - порт ssh на удаленной машине;
q - не показывать сообщения об ошибках;
v - режим отладки;
x - отключить перенаправление X11;
X - включить перенаправление Х11;
C - включить сжатие.
Выполним интерпретатор bash на удаленном сервере и передадим ему наш локальный скрипт с помощью перенаправления ввода Bash:
ssh user@host 'bash -s' < script.sh
Использование ssh пароля для входа на сервер не только неудобно но и небезопасно, потому что этот пароль в любой момент может быть подобран. Самый надежный и часто используемый способ аутентификации - с помощью пары ключей RSA. Секретный ключ хранится на компьютере, а публичный используется на сервере для удостоверения пользователя.
Настроить такое поведение очень легко. Сначала создайте ключ командой:
ssh-keygen -t rsa
Во время создания ключа нужно будет ответить на несколько вопросов, расположение оставляйте по умолчанию, если хотите подключаться без пароля - поле Passphare тоже оставьте пустым.
Затем отправляем ключ на сервер:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@host
Вот и все. Теперь при попытке подключится к этому серверу пароль запрашиваться не будет, а сразу произойдет подключение.
Напомню, что хранить пароли в обычных текстовых файлах небезопасно, но если хотите, то да - возможно. Для этого используется оператор перенаправления ввода Bash:
ssh user@host < local_file.txt
Кроме выполнения команд, можно копировать файлы по ssh. Для этого используется утилита scp. Просто укажите файл, который нужно передать, удаленный сервер и папку на сервере, вот:
scp /адрес/локального/файла пользователь@хост:адрес/папки
Например:
scp ~/test.txt user@host:documents
Кроме утилиты scp, передача файлов ssh может быть выполнена более хитрым способом. Прочитаем файл и с помощью cat, передадим, а там сохраним поток в файл:
cat localfile | ssh user@host "cat > remotefile"
Или так:
ssh user@host "cat > remotefile" < localfile
Пойдем еще дальше, вы можете сжимать файлы перед передачей с помощью tar, а потом их сразу же на лету распаковывать:
tar czf - /home/user/file | ssh user@host tar -xvzf -C /home/remoteuser/
Такое копирование файлов ssh позволяет отправлять сразу целые папки.
SSH — удобный и надежный протокол для работы с удаленными устройствами. Он позволяет безопасно загружать и скачивать необходимую информацию с сервера на компьютер и наоборот. Преимущество SSH – простота использования и универсальность удаленного доступа, наличие ключей шифрования, обеспечивающих высокую степень защиты данных.