Як зберігати SSH Credentials у терміналі


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 як ~/.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налаштований на аутентифікацію публічно-приватного ключа, коли ви ввімкнете скриньку в коробку зараз, він не повинен запитувати пароль для rootоблікового запису - натомість він запитає пароль для вашого ключа . Прочитайте далі про те, як зробити це те, що вам не потрібно постійно вводити.

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

Зауважте, кожен, хто захоплює ваш ~/.ssh/id_rsaфайл, може перейти на цю машину, як rootне вводячи пароль для віддаленої машини. Захист паролем файлу ключа гарантує, що їм потрібно знати пароль для цього ключа, щоб використовувати його. Переконайтеся, що файл захищений. Використовуйте шифрування диска на вашому Mac і дотримуйтесь прав доступу до файлу та ~/.ssh/каталогу.

Щоб полегшити використання ключа, не вводячи пароль кожен раз, OS X запускає ssh-agentпроцес у фоновому режимі на вашій машині. Цей агент буде кешувати ключове слово при першому використанні його, тому вам доведеться вводити свій пароль лише раз у раз. Якщо ви спите лише ваш комп'ютер, ніколи не перезавантажуйте його, ви можете проходити довгі періоди часу, не вводячи свій пароль.

Ви можете попередньо кешувати всі свої 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 якось. Схоже, зробити це надзвичайно складно і не є життєздатним рішенням для мене. Ось чому: <Більше>
tammy

<продовж.> У мене є доступ до командного рядка до кількох веб-серверів (всього 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, що і для sshOS X.
Ian C.

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 просто віддаляло мене від базового командного рядка. Я відредагував свій ОК із загальною метою. Подивитися.
таммі

Я припускаю, що ви можете підключитися до root@123.456.789.012 і просто хочете автоматизувати процес. Ви взагалі не хочете вводити кожен раз ssh -p 2200 root@123.456.789.012і Password: **********************?
enzo

ssh-copy-idне входить до стандартного розподілу OS X.
Ян Ч.

@IanC. Думаю, я забув, що встановив його заварити. змінитиму мою відповідь
enzo

Ви отримали це @maetsoh - саме цього я хочу досягти тут.
таммі

1

На додаток до матеріалів із відкритим / приватним ключем, .ssh / config файл може бути налаштований для полегшення використання команд ssh, як-то псевдоніми, дефолт користувача / порту на сервері, ssh-параметрів, команд проксі ...

В основному все, що складно, ви можете вписати в команду ssh, може бути і в цьому файлі.


0

Я переніс Putty на Mac як нативний пакет програм, тому немає потреби в макпортах або терміналах, якщо ви не є технічним користувачем.

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

Ура,


Ласкаво просимо до "Запитайте різних"! Обов’язково відповідайте на питання безпосередньо. Якщо ви згадуєте продукт, над яким працюєте, це чудово, але намагайтеся бути на темі, на відміну від вставлення однієї маркетингової розмитості на кілька публікацій.
bmike
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.