Крок 1
Переконайтеся, що ваш місцевий агент готовий
Тільки тому, що ви можете запустити ssh на ваш бастіон-сервер, не вказуючи свій ключовий шлях або отримавши запит на пароль, не означає, що ваш ssh-агент працює і тримає ваш ключ. Деякі сучасні ОС (наприклад, OSX) справляються із цим.
На вашій локальній машині
$ ssh-add -L
ssh-rsa ObahfCbvagGbLbhSbeHfvatEBG13== ~/.ssh/mykey.pem
ssh-rsa LbhNerWhfgJnnlGbbPyrireEBG13== ~/.ssh/sharedkey.pem
рис.1
Це означає, що ваш агент працює і має ваш ключ.
$ ssh-add -L
The agent has no identities.
рис.2
Це означає, що ви не додали жодного ключа до свого агента. Виправте це за допомогою:
ssh-add ~/.ssh/mykey.pem ~/.ssh/sharedkey.pem
рис.3
Крок 2
Переконайтеся, що ваш віддалений агент готовий
SSH у ваш бастіон-сервер і повторіть чек з рис.1 та рис.2 . Однак помилка, яку ви швидше можете отримати, така:
$ ssh-add -L
Could not open a connection to your authentication agent.
рис.4
Це, швидше за все, означає, що ваш клієнт SSH не пересилає з'єднання вашого агента аутентифікації.
Ви можете примусити це за допомогою -A
прапора (доки дозволяє конфігурація sshd на сервері, що є за замовчуванням ).
$ ssh -A bastion.ec2
рис.5
Крок 3
Переконайтеся, що ви використовуєте праві клавіші
Якщо ви додали ключі до свого агента, ваш агент пересилає, а ваш віддалений агент перелічує ваші локальні ключі. Є лише дві ймовірні причини, по яких ви не отримуєте зв’язок. Або ви не використовуєте праву клавішу, або не використовуєте правильне ім'я користувача.
Виведіть публічний аналог на ваш приватний ключ:
$ cd
$ cd .ssh
$ ssh-keygen -y -f mykey.pem
ssh-rsa ObahfCbvagGbLbhSbeHfvatEBG13
$ ssh-keygen -y -f sharedkey.pem
ssh-rsa LbhNerWhfgJnnlGbbPyrireEBG13
рис.6
Вони повинні бути такими ж , як то , що ви бачили від ssh-add -L
до до ==
ближче до кінця.
Тепер так чи інакше вам доведеться потрапити у вікно, до якого ви не можете підключитися, і подивитися вміст $HOME/.ssh/authorized_keys
файлу для користувача, до якого ви намагаєтесь підключитися. Вам потрібно переконатися, що відкритий ключ, який ви виводите за допомогою команди вище, знаходиться у цьому файлі на рядку сам по собі. Ви не можете повірити, що те, sharedkey.pub
що кубики Bro 2, надіслані вам по електронній пошті, є правильним. Перевірте! Для цього може знадобитися залучити когось іншого, хто може запустити SSH як цей користувач, щоб отримати файл санкціонованого_кейса або отримати root-доступ. Якщо ви зайшли так далеко, і він все ще не працює, ви не можете скористатися ярликами.
Крок 4
Зробити це легко
Сподіваємось, кроки, описані вище, вас змусили. Тепер давайте змусимо цю головну біль згасати до тих пір, поки ви використовуєте цю робочу станцію.
Налаштуйте свій локальний ssh-клієнт
Host *
# A lot of people put an IdentityFile line in this Host * section.
# Don't do that unless you will use only 1 key everywhere forever.
#IdentityFile id_rsa
Host bastion.ec2
# You want to make sure you always forward your agent to this host.
# But don't forward to untrusted hosts. So don't put it in Host *
ForwardAgent yes
# Go a head and put the IP here in case DNS ever fails you.
# Comment it out if you want. Having it recorded is a good backup.
HostName 172.31.0.1
# You don't want to create a proxy loop later, so be explicit here.
ProxyCommand none
# SSH should try using all keys in your .ssh folder, but if you
# know you want this key, being explicit speeds authentication.
IdentityFile ~/.ssh/mykey.pem
# Connect effortlessly by hostname or IP address
# This assumes that your internal DNS uses the fake TLD ec2
# This assumes that 172.31.0.0 is your C-Class subnet
Host *.ec2 172.31.*
# This command says proxy all ssh connections through bastion as if
# you had done an ssh -A
ProxyCommand ssh -W %h:%p bastion.ec2
ForwardAgent yes
# These next lines are documentation you leave as a love letter to
# your future self when all else fails or you have to help a
# coworker and decide to look at your own config.
# ssh-add ~/.ssh/*.pem
# ssh -At bastion.ecs ssh admin@172.31.18.19
рис.7
Якщо ви не відбираєте нічого іншого від рис.7, це має бути правильне використання ProxyCommand
& ForwardAgent
.
Автоматично заповнюйте .bash_profile
Вам не потрібно робити це ssh-add
вручну щоразу, коли ви входите в свою машину. ~/.bash_profile
це сценарій, який запускається щоразу при вході в систему **. Покладіть рядок із рис. 3 там, і ви завжди повинні бути готовим вашого агента.
** Не плутайте це з тим, .bashrc
що працює для кожного нового [інтерактивного] терміналу. Ваш агент продовжує працювати, навіть якщо ви закриєте всі свої семінари на терміналі. Не потрібно перезавантажувати ключі
Альтернатива використанню .bash_profile
Я також створив суть, яка додає агент запуску OSX / macOS . Ви можете використовувати цей метод для запуску ssh-agent
завантажувача. Встановити дуже просто:
curl -sSL https://gist.github.com/RichardBronosky/429a8fff2687a16959294bcee336dd2a/raw/install.sh | bash
ForwardAgent yes
з ,-A
якщо господар НЕ дозволяє його.