webew
Войти » Регистрация
 
Linux

как выполнить команду на удалённом сервере, вводя пароль как аргумент командной строки

17 августа 2012, 17:10
Автор: 1234ru
У команды ssh (которая обычно используется для соединения) отсутствует возможность получить пароль сразу из командной строки (его можно только ввести вручную).
Это неудобно при составлении скриптов, которые должны отрабатывать автоматически, без вмешательства администратора.

Как составить команду, которая соединится с сервером и выполнит на нём определенные действия?
Можно ли выполнить несколько действий за одно соединение?
Добавить комментарий
Отображение комментариев: Древовидное | Плоское
NO USERPIC

rgbeast

Это, в принципе, сделать можно, но делать так не стоит. Для автоматического входа нужно использовать авторизацию по ключу (сертификату).

1) на машине, с которой требуется вход под юзером, под которым будет выполнен скрипт, запустить
ssh-keygen

это создаст приватный и публичный ключи: ~/.ssh/id_rsa и ~/.ssh/id_rsa.pub (волна - домашняя директория юзера)

2) на машине, на которую требуется зайти под юзером, под которым будет вход, добавить содержимое id_rsa.pub как одну строчку в файл ~/.ssh/authorized_keys (если такого файла нет, просто создать его равным ~/.ssh/id_rsa.pub )

3) вход по ssh теперь будет без пароля
17.08.2012, 22:25
Ответить

1234ru

Спасибо за инструкцию.

Выяснилось, что вместо п.2) существует команда ssh-copy-id, которая все это и проделает (файл с ключом нужно указать явно, т.к. по умолчанию используется не "id_rsa.pub", а "identity.pub"):

ssh-copy-id -i ~/.ssh/id_rsa.pub remoteuser@remotehost



Такой вопрос возник: нормально ли, что команды по ssh выполняются с задержкой в несколько секунд? (вряд ли она связана со скоростью сети; такое впечатление, что с чем-то еще, т.к. слишком уж долго)
То, что не убивает нас, делает нас инвалидами.
11.05.2013, 00:16
Ответить
NO USERPIC

rgbeast

Время тратится на handshaking при каждом подключении. Теоретически это может быть связано с генерацией сессионных ключей.
11.05.2013, 00:35
Ответить

1234ru

Все-таки какой-то непонятный этот механизм с публичными и приватными ключами.

При авторизации по паролю всё понятно: защищают сервер и хранят доступ к нему в секрете. Кому доступ положен - сообщают пароль.

В случае же с публичным и приватным ключами клиент наоборот раздает что-то серверам. И это что-то не хранится в тайне - ключ ведь публичный.
Безопасность при этом обеспечивается тем, что по сети передается именно публичный ключ (из которого не делается секрета и поэтому не страшно, что его перехватят), а не приватный. Но он же передается от сервера клиенту! То есть, это клиент должен проверить соответствие ключей, а не сервер!
А кто проверит, что клиент его сделает честно? Что ему помешает клиенту обмануть сервер?
То, что не убивает нас, делает нас инвалидами.
16.11.2016, 10:56
Ответить
NO USERPIC

rgbeast

Миша, см. теорию: Криптосистема с открытым ключом и Доказательство с нулевым разглашением.

Базовая идея основана на односторонней функции. То есть такой функции вычислить которую можно, а обратную только перебором всех чисел. Вторая хитрость в том, что обратную вычислить все-таки можно, зная приватный ключ (приватный и публичный ключ возникают одновременно в процессе построения хэш-функции). То есть сервер присылает клиенту текст. Клиент вычисляет обратную функцию с помощью закрытого ключа и посылает ответ серверу. Сервер публичным ключем расшифровывает (это может сделать каждый) и убеждается, что клиент обладает этим ключом.

Теоретически, квантовый компьютер (если решат технические проблемы по его созданию) сможет взломать систему шифрования и тогда только квантовая криптография останется надежным решением.
16.11.2016, 15:29
Ответить
© 2008—2017 webew.ru, связаться: x собака webew.ru
Сайт использует Flede и соответствует стандартам WAI-WCAG 1.0 на уровне A.
Rambler's Top100

Реклама: