ssh авторизация по ключам и проброс настроек переменных окружения на другие хосты


Anonymous - Posted on 13 Март 2015

Собственно, возникла проблема:
Есть n+1 серверов, между которыми надо ходить друг на друга.
При запуске в screen ssh на другие сервера почему-то надо и, как минимум вводить пароль
Почему - проблема кроется в отсоединении screen сессии и "reattach" сессии screen после переподключения.

Дано:
Имеем пару открытый + закрытый ключ.

На первой машине, с которой ходим:

0a) Windows - запускаем Pageant такой командой из bat/cmd скрипта:
# запустить pageant, чтобы после запуска программы окно cmd само закрылось

 
c:\ start полный\путь\к\pageant.exe путь\к\приватному\ключу.ppk

0b) Linux Дописать в Ваш ~/.bashrc|.zshrc нечто вроде

if [ -f ~/.agent ]; then
    . ~/.agent
    if ps -p $SSH_AGENT_PID > /dev/null && [ -S $SSH_AUTH_SOCK ]; then
        echo "ssh agent ok"
    else
        unset SSH_AUTH_SOCK SSH_AGENT_PID
        eval $(ssh-agent -s)
        echo -e "SSH_AUTH_SOCK=$SSH_AUTH_SOCK\nSSH_AGENT_PID=$SSH_AGENT_PID" > ~/.agent
        ssh-add
        echo "ssh agent ok"
    fi
else
    unset SSH_AUTH_SOCK SSH_AGENT_PID
    eval $(ssh-agent -s)
    echo -e "SSH_AUTH_SOCK=$SSH_AUTH_SOCK\nSSH_AGENT_PID=$SSH_AGENT_PID" > ~/.agent
    ssh-add
    echo "ssh agent ok"
fi

Проверить, чтобы на unix системе ~/.ssh и файлы в нём права доступа были как 700/600

$ chmod 700 ~/.ssh
$ chmod -R 600 ~/ssh/*

Тогда при запуске ssh-agent у Вас должен будет спросить пароль на закрытый ключ и жить себе в памяти.
открытый и закрытый ключ, соответственно должны лежать:
Открытый ключ: authorized_keys
Закрытый ключ: id_rsa
Список доверенных хостов с их отпечатками (в случае атаки "человек посередине", например, или при смене отпечатка сервера- сменился ключ сервера - оно обращает Ваше внимание вопросом): known_hosts

1) Дописать в конфигурационный файл .ssh/config

Host *.somedomain.com
ForwardAgent yes

2) Распространить как минимум конфигурационный файл shell оболочки, открытый ключ и ./ssh/config на те хосты, которыми надо управлять.

3) Запустить screen на удалённый сервер, заметить проброс переменных окружения и отсутствие запроса пароля.
Смотри так же:

0
Ваша оценка: Ничего

Ой, какая каша :(.

Открытый ключ лежит в id_тип-шифрования.pub. В authorized_keys лежат другие открытые ключи, те, по которым разрешено заходить на машину.

Приведённый .bashrc запускает агент и тут же добавляет в него закрытый ключ. Это имеет смысл делать только на машине, где этот ключ доступен (ваш ноутбук или достаточно защищенное рабочее место).

Использовать ForwardAgent без ssh-askpassможно только если вы уверены, что root на целевой машине не захочет воспользоваться вашим ключам по своему усмотрению.

И, наконец, главное. А причём тут screen-то? какую проблему решаем?

Отправить комментарий

Google Friend Connect (leave a quick comment)
loading...
Содержание этого поля является приватным и не предназначено к показу.