Сгенерируйте ключ SSH (если у вас его нет)
Если вы используете GNOME, приложение « морской конек» («Пароли и ключи шифрования») может сделать это за вас: Файл -> Создать -> Ключ защищенной оболочки .
Если вы предпочитаете терминал, запустите для создания пары ключей. Допустимые типы пар ключей:ssh-keygen -t <type>
- RSA: по умолчанию
- dsa: более или менее эквивалентный, за исключением ограниченного 1024-битными ключами
- ecdsa: та же безопасность с меньшими ключами, но относительно новая и немного редкая в программном обеспечении SSH.
- ed25519: Высокая безопасность (более устойчива к атакам по побочным каналам и слабым генераторам случайных чисел). Очень быстрая генерация подписи. Очень новый Доступно только в OpenSSH> = 6.5 .
Программа попросит вас ввести ключевую фразу и место, где сохранить новый ключ. Рекомендуется использовать предложенный путь по умолчанию, потому что все другие инструменты будут искать его там.
Загрузите открытый ключ на удаленный сервер
Опять же, морские коньки часто могут сделать это за вас - в разделе «Мои личные ключи» щелкните правой кнопкой мыши свой 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, он будет хранить дешифрованный ключ в памяти. Мы хотим, чтобы избежать повторного ввода пароля всякий раз, когда мы подключаемся к серверу.
Во-первых, агент должен быть запущен, или путь запущенного коммуникационного сокета должен быть загружен в переменную. Запуск ssh-agent на терминале сгенерирует команды для назначения и установки переменных агента. Эти команды могут быть сохранены в файл для использования в другом терминале. Кроме того, можно выполнить эти команды и забыть о повторном использовании того же агента в другом терминале. например: eval $(ssh-agent)
.
Загрузка ключа - это простой вопрос выполнения ssh-add
и присвоения ему парольной фразы.
Если вы используете GNOME, gnome-keyring-daemon обычно предоставляет те же функциональные возможности агента SSH, что и ssh-agent, поэтому вам не нужно ничего запускать. GNOME автоматически загрузит и разблокирует ключ при входе в систему.
Оболочка на удаленный сервер без пароля
Если все было сделано правильно, использование не будет запрашивать пароль. Если что-то не так с агентом, а не с ключом, вам будет предложено ввести пароль для пароля, а не пароль для учетной записи пользователя.ssh user@server
Все, что использует ssh для связи, будет работать без ввода пароля учетной записи пользователя, когда в агент загружен правильный ключ. Такие программы, как scp, sftp и rsync, используют это.
Заметки:
- Вам нужен только ключ SSHv2, так как SSHv1 очень небезопасен и теперь не используется.
- Вам также нужен только один тип ключа - достаточно RSA или DSA. (ed25519 и ECDSA являются недавними и поэтому не поддерживаются везде).
- Все эти шаги одинаковы для ключей RSA и DSA. Если вы используете DSA, используйте
id_dsa
вместоid_rsa
, и ECDSA будет иметьid_ecdsa
. - Используются серверы OpenSSH старше 3.0,
authorized_keys2
но вряд ли вы найдете что-либо старше 5.0. - Эти инструкции применимы только для OpenSSH версии 3.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 / кросс-терминальный агент, ~ / .Ssh / кросс-терминал агента