Как настроить SSH, поэтому мне не нужно вводить пароль при подключении к хосту?
Как настроить SSH, поэтому мне не нужно вводить пароль при подключении к хосту?
Если вы используете GNOME, конек приложение («Пароли и ключи шифрования») может сделать это за вас: файл -> новый -> Безопасный ключ оболочки,
Если вы предпочитаете терминал, запустите ssh-keygen -t <Тип>
для создания пары ключей. Допустимые типы клавиш:
Программа попросит вас ключевая фраза и место, где нужно сохранить новый ключ. Рекомендуется использовать рекомендуемый путь по умолчанию, потому что там будут искать все другие инструменты.
Еще раз, конек часто может это сделать для вас - в Мои личные ключи, щелкните правой кнопкой мыши свой SSH-ключ и выберите Настроить ключ для защищенной оболочки,
Или, ssh-copy-id -i ~/.ssh/id_rsa.pub remote-user@remote-host
в терминале.
Или, полностью вручную шаг за шагом:
.ssh
в домашнем каталоге удаленного пользователя на удаленном хосте.authorized_keys
(если он еще не существует).umask
более либеральный, чем обычно, сделать файл не доступным для группы: chmod go-w ~/.ssh ~/.ssh/authorized_keys
,~/.ssh/id_rsa.pub
) в пульт ~/.ssh/authorized_keys
файл.Если вы загружаете свой закрытый ключ в ssh агент, он будет хранить дешифрованный ключ в памяти. Мы хотим, чтобы это избегало повторного ввода пароля всякий раз, когда мы запускаем сервер.
Во-первых, агент должен быть запущен или путь запущенного коммуникационного сокета будет загружен в переменную. Бег SSH-агент на терминале будут генерировать команды для назначения и установки переменных агента. Эти команды могут быть сохранены в файле для использования в другом терминале. В качестве альтернативы можно запустить эти команды и забыть о повторном использовании одного и того же агента в другом терминале. например: eval $(ssh-agent)
,
Загрузка ключа - это простой вопрос выполнения ssh-add
и дать ему пропущенную фразу.
Если вы используете GNOME, гном-брелок-демон обычно предоставляет те же функции агента SSH, что и ssh-agent, поэтому вам не нужно начинать что-либо. GNOME автоматически загрузит и разблокирует ключ при входе в систему.
Если все было сделано правильно, используя ssh пользователь @ сервер
не запрашивает пароль. Если что-то не так с агентом, а не с ключом, вам будет предложено ввести пароль для ключа, а не пароль для учетной записи пользователя.
Все, что использует ssh для связи, будет работать без ввода пароля учетной записи пользователя, когда в агент будет загружен правильный ключ. Такие программы, как УПП, SFTP а также Rsync воспользуйтесь этим.
id_dsa
вместо id_rsa
, и ECDSA будет иметь id_ecdsa
, authorized_keys2
- но вряд ли вы найдете что-нибудь старше 5.0.lsh
, ssh.com
, и другие (Unix, а не) SSH-серверы не включены в этот учебник.Копирование открытого ключа на удаленный хост:
ssh-copy-id -i ~ / .ssh / id_rsa.pub myaccount @ remotehost # this cat ~ / .ssh / id_rsa.pub | ssh myaccount @ remotehost \ 'mkdir -p ~ / .ssh; cat >> ~ / .ssh / authorized_keys # или это
ssh-agent> ~ / .ssh / cross-terminal-agent , ~ / .ssh / кросс-терминал агента
Вы не указали, к какой Unix вы подключаетесь, к какой Unix вы подключаетесь, к какой оболочке вы используете, какой вариант SSH вы используете и т. Д. Поэтому некоторые из них, возможно, придется немного скорректировать; это основано на достаточно последних версиях OpenSSH, которые используются во многих вариантах unix.
Это все из вашей локальной настольной системы.
ssh-keygen
Обязательно используйте значение по умолчанию для имени ключа. Я предлагаю вам делать установите кодовую фразу на этом ключе, иначе это проблема безопасности. «-t rsa» не будет плохой идеей, но, вероятно, не понадобится.
ssh-copy-id username@server
Это потребует пароль, который вы будете использовать для входа в систему, и настроит для вас файл authorized_keys. (не нужно делать это вручную)
Затем:
`ssh-agent`
или, может быть, это:
exec ssh-agent sh
или:
exec ssh-agent bash
Это запустит агент SSH, который может удерживать ваш ключ. Во многих современных вариантах Unix, если вы вошли в систему графически, это уже произошло. Первый вариант (с обратными окнами) помещает ssh-agent в фоновый режим и устанавливает переменные среды, чтобы поговорить с ним. Во вторых, агент запускает оболочку для вас, так что, когда вы выходите из оболочки, агент завершает работу.
У многих современных вариантов Unix уже есть агент, который работает для вас, особенно если вы вошли в систему графически. Вы можете попробовать "ps aux | grep ssh-agent
" или "ps -ef | grep ssh-agent
", если что-то уже запущено, используйте это.
Затем, наконец:
ssh-add
Он попросит кодовую фразу; дайте ему тот, который вы дали ssh-keygen. Также есть способы заставить его спросить графически. И вы можете поместить ssh-agent и ssh-add в свои скрипты входа (настройка зависит от используемой оболочки), чтобы автоматизировать это, но некоторые варианты Unix (например, Ubuntu Linux, например) делают большую часть этого автоматически, поэтому что все, что вам действительно нужно сделать, это создать ключ и использовать ssh-copy-id для его настройки на удаленном хосте.
Теперь, "ssh username@server
«должен работать без запроса какой-либо проверки подлинности. За кулисами используется ключ, который держит ssh-agent, и просить агента выполнить магические подписи для него.
Это можно сделать в PuTTY на Windows.
После того, как вы установили пару общедоступных / закрытых ключей (как показывают другие ответы здесь), запустите PuttyGen. Там загрузите существующий закрытый ключ, который вы уже настроили, а затем сохраните его как закрытый ключ PuTTY (ppk).
Затем в PuTTY просто нажмите на сохраненный сеанс, на который вы хотите автозарегистрироваться, и нажмите «Загрузить». Отсюда перейдите в Connection -> Data на левой панели и в поле «Auto-login username» введите имя пользователя для этого удаленного сервера:
После этого перейдите в Connection -> SSH -> Auth и просмотрите ppk, который вы сделали в PuttyGen:
Затем вернитесь на страницу сеанса и сохраните ранее загруженный сеанс.
Из очень похожего вопроса о ServerFault, Я бы рекомендовал использовать SSH-копия-идентификатор, который выполняет все шаги, связанные с настройкой ключей аутентификации для вас:
ssh-copy-id - это скрипт, который использует ssh для входа в удаленную машину (предположительно, используя пароль для входа в систему, поэтому аутентификация пароля должна быть включен, если вы не сделали некоторые умное использование нескольких идентичностей)
Он также изменяет разрешения удаленный пользовательский дом, ~ / .ssh и ~ / .ssh / authorized_keys для удаления группы (что в противном случае запретить вход в систему, если Удаленный sshd имеет StrictModes, установленный в его конфигурации).
Если задана опция -i, то файл удостоверения (по умолчанию ~ / .ssh / identity.pub) используется, независимо от того, есть ли ключи в вашем ssh-agent.
Все, что вам нужно сделать, это просто:
ssh-copy-id user@host
Введите пароль один раз, и вы готовы к работе!
Помимо всего, что было сказано о том, как установить ключи ssh, я рекомендую Брелок как SSH-агент консольный интерфейс, который позволяет обрабатывать один только для каждого процесса системы, а не для входа.
Я знаю, что уже есть инструменты GNOME и KDE, которые делают то же самое, но если вы консольный наркоман type это отлично (и может использоваться в большинстве систем Unix).
Чтобы использовать его, просто добавьте следующее к своему ~/.bashrc
(аналогично для других оболочек):
if type keychain >/dev/null 2>/dev/null; then
keychain --nogui -q <all your SSH/PGP keys>
[ -f ~/.keychain/${HOSTNAME}-sh ] && . ~/.keychain/${HOSTNAME}-sh
[ -f ~/.keychain/${HOSTNAME}-sh-gpg ] && . ~/.keychain/${HOSTNAME}-sh-gpg
fi
http://linuxproblem.org/art_9.html
Ваша цель
Вы хотите использовать Linux и OpenSSH для автоматизации ваших задач. Поэтому вам нужен автоматический вход с хоста A / user a в Host B / user b. Вы не хотите вводить какие-либо пароли, потому что вы хотите вызвать ssh из сценария оболочки.
Я написал этот очень короткий учебник после того, как ДЕЙСТВИТЕЛЬНО ДЕЙСТВИТЕЛЬНО расстроен ДЕЙСТВИТЕЛЬНО ДЕЙСТВИТЕЛЬНО длинными учебниками, потому что это так просто :)
test -f ~/.ssh/id_rsa.pub || ssh-keygen -t rsa #press enter twice if given prompts, then "ssh-add"
scp ~/.ssh/id_rsa.pub destID@destMachine:/tmp/ #type password
ssh destID@destMachine #type password
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
rm /tmp/id_rsa.pub
шпатлевка имеет -pw
вариант, который позволит вам создать ярлык на рабочем столе, как это:
"C:\Program Files\PuTTY\putty.exe" -ssh user@192.168.2.2 -pw your_password
ssh-keygen
, (Если он говорит вам, что вы должны указать тип, do ssh-keygen -t rsa
.) Когда он попросит вас указать местоположение файла, выберите значение по умолчанию. Когда он запрашивает у вас парольную фразу, нажмите enter, чтобы не вводить кодовую фразу.cat ~/.ssh/id_rsa.pub
(или независимо от местоположения файла по умолчанию в ssh-keygen
было, хотя вам придется иметь действительно старый ssh
установите для него другое); скопируйте вывод в буфер обмена.~/.ssh/authorized_keys
(если ~/.ssh
не существует, slogin
где-то; это простой и простой способ получить его с помощью прав доступа). Вставьте свой буфер обмена (содержащий id_rsa.pub
от другого хоста) в этот файл.Если вы хотите сделать все это в терминале в Linux:
На хосте
cd ~ / .ssh /
ssh-keygen -t {rsa | dsa} -b {1024 | 2048 | 4096} -C "текст комментария, если вы хотите" -f id_ArbitraryName
Элементы в {} - это опции, используйте rsa или dsa и выберите размер бита (более безопасный)
Затем вам нужно добавить разрешения для файлов authorized_keys и authorized_keys2.
cat id_ArbitraryName.pub >> authorized_keys
cat id_AribtraryName.pub >> authorized_keys2
Затем загрузите файл id_AribtraryName в поле, из которого вы хотите передать ssh. Если соединительная коробка основана на unix, может понадобиться файл конфигурации (в шпатлевке, кто-то выше описанный).
В соединительной коробке
В вашем файле конфигурации - vim ~ / .ssh / config
Host example.host.com # или имя вашего компьютера
Имя пользователя
IdentityFile ~ / .ssh / id_ArbitraryName
Для конфигурационного файла требуется разрешение 600. Для папки SSh требуется 700.
Надеюсь, что это поможет, если вы столкнетесь с проблемой конфигурации, которая много опущена.