Как хранить учетные данные SSH в терминале

33

Я новичок в MacBook и использую El Capitan.

Я переношу использование моей машины с ПК на MacBook. Я давно пользуюсь PuTTY и SuperPuTTY на ПК.

Я хочу создать и сохранить учетные данные для входа на мои веб-серверы в MacBook Terminal, как я это делал в SuperPuTTY на ПК.

Можно ли сохранить учетные данные для входа на веб-сервер в Mac Terminal?

Вот моя общая цель:

Я хотел бы знать, есть ли в Mac Terminal простой способ сохранить следующие учетные данные для входа в командную строку, а затем использовать своего рода шорткод для подключения к моему веб-серверу через терминал:

ssh -p 2200 root@123.456.789.012
Password: ****************************************************************

Я управляю и подключаюсь к 5 различным веб-серверам, поэтому сортировка и организация учетных данных для входа в метод короткого / быстрого подключения позволили бы значительно сэкономить время. Тем более, что мои пароли - загадочные 64-символьные строки.

цедилка
источник
Я удалил комментарии, когда третья редакция Тэмми выбила это из парка с точки зрения ясности и полезности. Отлично сработано!
bmike

Ответы:

50

Вы можете скопировать свой открытый ключ на удаленные машины. Пока у них включена аутентификация с открытым ключом, а ваш открытый ключ присутствует на удаленном компьютере, вы можете sshподключаться к машинам без необходимости ввода пароля.

Сначала вам нужно сгенерировать пару открытых / закрытых ключей, например:

ssh-keygen -t rsa

Следуйте инструкциям. Когда он спросит, хотите ли вы защитить ключ парольной фразой, скажите ДА! Это плохая практика - не защищать паролем свои ключи, и я покажу вам, как вводить пароль нужно только время от времени.

Если у вас уже есть пара ключей, вы можете пропустить шаг выше.

Теперь, предполагая, что ваш ключ ssh существует на вашем Mac as ~/.ssh/id_rsa.pub, вы можете установить его на удаленном компьютере, запустив:

cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

Для приведенного выше примера конкретного сервера команда будет выглядеть так:

cat ~/.ssh/id_rsa.pub | ssh -p 2200 root@123.456.789.012 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

Вам нужно будет ввести пароль для root@123.456.789.012выполнения этой копии, но это должно быть в последний раз, когда вам нужно сделать это. Предполагая, что удаленный сервер sshdнастроен на выполнение аутентификации с использованием открытого и закрытого ключей, когда вы заходите в ssh сейчас, он не должен запрашивать пароль для rootучетной записи - вместо этого он запрашивает пароль для вашего ключа . Читайте дальше о том, как сделать это то, что вам не нужно вводить все время.

Повторите вышеуказанное для каждой машины, к которой вы хотите подключиться с помощью ключей, а не пароля.

Обратите внимание, что любой, кто получит ваш ~/.ssh/id_rsaфайл, может подключиться к этой машине по ssh, rootне вводя пароль для удаленной машины. Пароль, защищающий файл ключа, гарантирует, что им потребуется знать пароль для этого ключа, чтобы использовать его. Убедитесь, что файл в безопасности. Используйте шифрование диска на вашем Mac и сохраняйте права доступа к файлу и ~/.ssh/каталогу.

Чтобы упростить использование ключа без необходимости каждый раз вводить пароль, OS X запускает ssh-agentпроцесс в фоновом режиме на вашем компьютере. Этот агент будет кэшировать пару ключей при первом использовании, поэтому вам нужно будет вводить пароль только время от времени. Если вы только спите на своем Mac, никогда не перезагружаете его, вы можете работать в течение длительного периода времени без необходимости ввода пароля.

Вы можете предварительно кэшировать все ваши ключи SSH с ssh-agentпомощью команды:

ssh-add

Теперь вам нужно только запомнить пароль ключа , а не множество разных паролей учетной записи. Я обычно храню свои пароли ключей в 1Password (без присоединения), еще больше упрощая количество паролей, которые мне нужно запомнить. Затем я просто смотрю их в 1Password и вырезаю и вставляю их в Терминал в тот странный момент, когда я перезагружаю свой Mac и вызываю ssh-agentперезапуск.

Если вы объедините в этом вопросе копирование своего ключа на удаленные машины с решением для управления соединениями Terminal.app , у вас будет что-то очень близкое к PuTTY для взаимодействия с GUI.


На стороне сервера проверьте /etc/ssh/sshd_configи убедитесь, что:

PubkeyAuthentication yes

включен в конфигурации (по умолчанию в OpenSSH). Вы также можете установить:

PasswordAuthentication no

Пока вы там, аутентификация на основе пароля отключена, и ключи становятся единственным способом доступа к машине.

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

Ян С.
источник
Спасибо @IamC - этот ответ отличный, и я уверен, что он будет работать. Этим утром я создал учетную запись стека обмена на канале Mac, чтобы посмотреть, смогу ли я найти быстрый и простой способ сохранить учетные данные для входа в систему в терминале или на Mac. Похоже, что это чрезвычайно сложно и не является жизнеспособным решением для меня. И вот почему: <подробнее>
Тэмми
<cont.> У меня есть доступ из командной строки к ряду веб-серверов (всего 5). У меня в офисе есть настольный ПК с SSH (через PuTTY) доступом к этим веб-серверам. В моем домашнем офисе у меня большой ноутбук с SSH (через PuTTY) доступом к этим веб-серверам. Я только что купил MacBook Air для поездок и посещения клиентов на месте. Это идеально подходит для этой конкретной потребности. Я надеялся сделать SSH-соединения с серверами такими же простыми, как и через PuTTY и SuperPuTTY на ПК. <подробнее>
Тэмми
<продолжение.> Но я не могу пройти путь с открытым ключом авторизации, потому что мне нужно изменить способ работы PuTTY на моих домашних и рабочих офисных ПК. Это стало слишком сложной задачей, чтобы заставить Mac работать так же, как мой ПК, поэтому я думаю, что мне просто придется придерживаться процесса копирования и вставки для подключения с моего Mac. Спасибо за помощь. Я очень ценю, что вы помогли мне попытаться сделать мой процесс проще.
тамми
2
@tammy вы можете оставить PasswordAuthentication yesна стороне сервера, и PuTTY продолжит функционировать, как всегда на вашем компьютере с Windows. Это не тот или другой сценарий - вы можете разрешить оба типа аутентификации на сервере. PuTTY также поддерживает авторизацию с открытым / закрытым ключом, как это FWIW. Вы можете скопировать свои ~/.ssh/id_rsa*файлы на свой компьютер с Windows и импортировать их в PuTTY для аутентификации на сервере. PuTTY изнутри использует те же библиотеки OpenSSH для подключения, что и sshв OS X.
Ян С.
1
ssh-addвсе еще работает даже в Сьерре (OS X 10.12). Спасибо
SaxDaddy
4

Вы можете использовать sshpass для сохранения пароля, и вам не придется вставлять его каждый раз, что не является хорошей практикой (проблемы безопасности).

Следуйте инструкциям по установке Mac OS X на: https://gist.github.com/arunoda/7790979

Когда у вас установлен sshpass, запустите sshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no root@123.456.789.012:2200

сделайте то же самое для своих 5 веб-серверов, и вам не нужно будет каждый раз вводить пароль.

бензо
источник
1
Я чувствую себя слишком глупо на этом. Я предполагаю, что использование ПК с PuTTY и SuperPuTTY просто отдалило меня слишком далеко от базовой командной строки. Я отредактировал мой OQ с моей общей целью. Взглянуть.
тамми
Теперь я предполагаю, что вы можете подключиться к root@123.456.789.012 и просто хотите автоматизировать процесс. Вы в принципе не хотите печатать каждый раз ssh -p 2200 root@123.456.789.012и Password: **********************?
Enzo
ssh-copy-idне является частью стандартного дистрибутива OS X
Ян С.
@IanC. Я думаю, что я забыл, что я установил его с Brew. изменит мой ответ
enzo
Вы получили это @maetsoh - это именно то, чего я хочу достичь здесь.
тамми
1

В дополнение к общему / закрытому ключу, файл .ssh / config может быть сконфигурирован для упрощения использования команд ssh, таких как псевдонимы, пользователь по умолчанию / порт на сервер, опции ssh, команды прокси ...

В этом файле тоже может быть что-нибудь сложное, что вы можете добавить в команду ssh.

user2189998
источник
0

Я перенес Putty на Mac как собственный пакет приложений, поэтому нет необходимости в macports или терминалах, если вы не технический пользователь.

Больше информации со скриншотами здесь: http://www.wine-reviews.net/2016/08/putty-for-mac-os-x-now-available.html

Ура,

twickline
источник
Добро пожаловать, чтобы спросить другого! Обязательно ответьте на вопрос напрямую. Если я упомянул о продукте, над которым вы работаете, это нормально, но постарайтесь быть в теме, а не вставлять одну и ту же маркетинговую рекламу в несколько постов.
bmike