Рабочий ssh-агент из сценария оболочки

Одна определенная проблема с ним состоит в том, что это - аутентификация простого текста, т.е. имя пользователя и пароль представляются ясное по сети, если Вы не соединяетесь по HTTPS.

Кроме того, нет никаких реальных встроенных контрмер нападения, Вы можете грубые запросы силы против всего этого день, и это не заблокирует соединение.

Для предотвращения ботов, получающих доступ сайту, можно использовать robots.txt: http://www.robotstxt.org/

Google и все уважение этот файл, но если Вы говорите о ботах взлома, это не поможет.

аутентификация htaccess не точно безопасна, но, вероятно, лучше, чем использование Сценария PHP для аутентификации, который будет иметь те же проблемы, но добавит в дополнительном слое уязвимости PHP.

Если Вы используете htaccess аутентификацию, наряду с определенным диапазоном IP-адреса белого списка ('Позволяют от'), и подключение по HTTPS, я считал бы это довольно безопасным. Для дополнительной безопасности Вы могли настроить белый список IP на уровне брандмауэра, а не уровне Apache.

19
задан 22 October 2013 в 23:57
7 ответов

ssh-agent is supposed to start a session and when it finishes the user session is over. So any command after ssh-agent would perhaps be executed after logoff.

What you want is a session-script that contains your sessions commands like this:

#!/bin/bash
ssh-add /path/to/key
bash -i # or other session starter

Then start ssh-agent session-script.

8
ответ дан 2 December 2019 в 20:15

I tend to do something like this in scripts that require an agent.

#!/bin/bash

# if we can't find an agent, start one, and restart the script.
if [ -z "$SSH_AUTH_SOCK" ] ; then
  exec ssh-agent bash -c "ssh-add ; $0"
  exit
fi

... and so on.

Basically the first thing the script does it check to see if an agent is running. If it isn't exec is used to start a new process in place of the script. The agent is started, keys are added, and finally, the script is called again (see the $0).

6
ответ дан 2 December 2019 в 20:15

Я много пробовал, и решение, которое, в конце концов, сработало, это замена моей ключевой фразы на пустую строку.

ssh-keygen -p
-2
ответ дан 2 December 2019 в 20:15

Лучше использовать связка ключей в данном случае

Debian / Ubuntu:

apt-get install keychain

RHEL / Fedora / CentOS

yum install keychain

Добавьте в свой .bashrc следующее:

eval `keychain --eval id_rsa`
4
ответ дан 2 December 2019 в 20:15

Я нашел с помощью решения Zoredache, ключ будет доступен любому shell'у, который случайно имеет тот же самый ssh-agent, что и shell'у, который вызвал скрипт. Я хотел избежать этого в скрипте, который требовал root доступа к удалённой машине, по очевидным причинам безопасности.

Я обнаружил, что в верхней части скрипта работает следующее shebang:

#!/usr/bin/ssh-agent bash

ssh-add /path/to/ssh-key
ssh root@remotehost "remote commands"
2
ответ дан 2 December 2019 в 20:15

Поместите следующее вверху вашего скрипта:

eval `ssh-agent`

Ваш скрипт должен выглядеть так:

#!/bin/bash
eval `ssh-agent`
ssh-add /path/to/key
...
...

Пояснение

Обратные кавычки вокруг ssh-agent collect его выход. eval собирает этот вывод, объединяет его в одну команду, а затем выполняет команду. Затем вы можете использовать ssh-add , чтобы указать свои ключевые учетные данные.

15
ответ дан 2 December 2019 в 20:15

Я обнаружил, что это работает для меня.

eval `ssh-agent` # create the process
ssh-add ~/.ssh/priv_key # add the key
git -C $repo_dir pull # this line is the reason for the ssh-agent
eval `ssh-agent -k` # kill the process

Я создаю процесс ssh-agent, добавляю ключ, делаю то, что мне нужно делать, а потом убить. Не нужно проверять, работает ли он позже.

6
ответ дан 2 December 2019 в 20:15

Теги

Похожие вопросы