Як налаштувати SSH, щоб мені не довелося вводити свій пароль під час підключення до хоста?
~/.ssh/config
PubkeyAcceptedKeyTypes ssh-rsa*,ssh-dss*
Як налаштувати SSH, щоб мені не довелося вводити свій пароль під час підключення до хоста?
~/.ssh/config
PubkeyAcceptedKeyTypes ssh-rsa*,ssh-dss*
Відповіді:
Якщо ви користуєтесь GNOME, додаток морський коник ("Паролі та ключі шифрування") може зробити це за вас: Файл -> Нове -> Захищений ключ оболонки .
Якщо ви віддаєте перевагу терміналу, запустіть, щоб створити ключ. Дійсні типи ключових слів:ssh-keygen -t <type>
Програма попросить вас ввести парольну фразу та місце, де зберегти новий ключ. Використовувати запропонований шлях за замовчуванням рекомендується, тому що там будуть шукати всі інші інструменти.
Знову ж, морський коник часто може це зробити для вас - у розділі Мої особисті клавіші правою кнопкою миші клацніть на вашій 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, gnome-keyring-daemon зазвичай забезпечує ту саму функціональність агента SSH, що і ssh-агент, тому вам не потрібно нічого запускати. GNOME автоматично завантажить і розблокує ключ під час входу.
Якщо все було зроблено правильно, використання не підкаже вам пароль. Якщо з агентом, а не ключем, щось не так, вам буде запропоновано ввести ключ проходу для ключа, а не пароль для облікового запису користувача.ssh user@server
Все, що використовує ssh для спілкування, працюватиме без введення пароля облікового запису користувача, коли в агент завантажений правильний ключ. Такі програми, як scp , 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 кіт ~ / .ssh / id_rsa.pub | ssh myaccount @ remotehost \ 'mkdir -p ~ / .ssh; cat >> ~ / .ssh / pooblasti_keys '# або це
ssh-agent> ~ / .ssh / перехресний-агент . ~ / .ssh / перехресний-агент
ssh-copy-id
яка копіює відкритий ключ на цільовий хост і автоматично встановлює дозволи.
ssh-keygen -f ~/.ssh/id_rsa -N "";ssh-copy-id -i ~/.ssh/id_rsa username@server-ip-or-address
(просто замініть username@server-ip-or-address
).
Ви не вказали, на якому Unix увімкнено, з яким Unix ви підключаєтесь, яку оболонку ви використовуєте, який варіант SSH ви використовуєте тощо. Тому дещо з цього, можливо, потрібно трохи відрегулювати; це засновано на досить недавніх версіях OpenSSH, які використовуються у багатьох варіантах unix.
Це все з вашої локальної настільної системи.
ssh-keygen
Обов’язково використовуйте за замовчуванням ім'я ключа. Я вважаю , що ви робите встановити кодову фразу на цьому ключі, в іншому випадку це проблема безпеки. "-t rsa" не була б поганою ідеєю, але, ймовірно, не потрібна.
ssh-copy-id username@server
Це запитає вас про пароль, який ви використовуєте для входу в систему, і налаштує для вас санкціоновані матеріали (не потрібно робити це вручну)
Потім, це:
`ssh-agent`
а може це:
exec ssh-agent sh
або:
exec ssh-agent bash
Це запустить агент SSH, який може тримати ваш ключ. У багатьох сучасних варіантах Unix, якщо ви ввійшли в систему графічно, це вже відбулося. Перший варіант (із задніми списками) ставить ssh-агент на задній план і встановлює змінні середовища для розмови з ним. У двох інших агентах є запуск оболонки для вас, так що при виході з оболонки агент виходить.
Багато сучасних варіантів Unix вже матимуть запуск агента, особливо якщо ви ввійшли в систему графічно. Ви можете спробувати " ps aux | grep ssh-agent
" або " ps -ef | grep ssh-agent
"; якщо щось вже працює, використовуйте це.
Потім, нарешті:
ssh-add
Він буде просити парольну фразу; дайте йому той, кому ви дали ssh-keygen. Є також способи змусити його запитати графічно. І ви можете помістити ssh-агент та ssh-add речі до своїх скриптів для входу (налаштування відрізняється залежно від оболонки, яку ви використовуєте) для автоматизації цього, але деякі варіанти Unix (наприклад, поточний Ubuntu Linux) роблять більшість цього автоматично, так що все, що вам потрібно зробити, це створити ключ і використовувати ssh-copy-id, щоб встановити його на віддаленому хості.
Тепер " ssh username@server
" має працювати, не вимагаючи автентифікації. За лаштунками використовується ключ, який тримає ssh-агент, і попросити агента виконати для нього магічні підписи.
Це можливо зробити і в PuTTY в Windows.
Після того, як у вас буде налаштована пара відкритих / приватних ключів (як показують інші відповіді тут), запустіть PuttyGen. Там завантажте наявний приватний ключ, який ви вже створили, а потім збережіть його як приватний ключ PuTTY (ppk).
Потім у PuTTY просто натисніть на збережений сеанс, на який потрібно авторизуватися, та натисніть Завантажити. Звідси перейдіть у З'єднання -> Дані на лівій панелі та введіть "Ім'я користувача автозавантаження" в імені користувача для цього віддаленого сервера:
Після цього перейдіть до Connection -> SSH -> Auth та перегляньте ppk, який ви створили в PuttyGen:
Потім поверніться на сторінку сеансу і збережіть сеанс, який ви завантажили раніше.
З дуже схожого питання на ServerFault я рекомендую використовувати ssh-copy-id , який виконує всі кроки, пов’язані з налаштуванням ключів аутентифікації для вас:
ssh-copy-id - це скрипт, який використовує ssh для входу у віддалену машину (імовірно, використовуючи пароль для входу, тому автентифікацію пароля слід активувати, якщо ви не зробили певне розумне використання декількох ідентичностей)
Він також змінює дозволи домашнього віддаленого користувача, ~ / .ssh та ~ / .ssh / санкціоновані_кейси для видалення групової записуваності (що інакше не дозволить вам увійти в систему, якщо для віддаленого sshd встановлено StrictModes у конфігурації).
Якщо параметр -i заданий, тоді використовується ідентифікаційний файл (за замовчуванням ~ / .ssh / identitet.pub), незалежно від того, чи є ключі у вашому ssh-агенті.
Все, що вам потрібно зробити, це просто:
ssh-copy-id user@host
Введіть свій пароль один раз, і ви готові йти!
Крім того, що вже було сказано про те, як встановити ключі ssh, я рекомендую Keychain як передній панель консолі ssh-agent, що дозволяє обробляти один лише системний процес, а не за вхід.
Я знаю, що вже є інструменти GNOME та KDE, які роблять те саме, але якщо ви є консольним наркоманом, це чудово (і може використовуватися в більшості систем 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
ssh-keygen
. (Якщо він говорить про те, що вам потрібно вказати тип, зробіть це 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 та вибирайте розмір бітів (більший - безпечніший)
Тоді вам потрібно додати дозволи до файлів санкціонованих_кілей та авторизованих_кісів2.
cat id_ArbitraryName.pub >> санкціоновані_кількі
cat id_AribtraryName.pub >> санкціоновані_кейси2
Потім завантажте файл id_AribtraryName у вікно, з якого потрібно сш. Якщо вікно з'єднання засноване на Unix, може знадобитися файл конфігурації (у шпаклівці, хтось над цим покрив).
На підключувальній коробці
У своєму конфігураційному файлі - vim ~ / .ssh / config
Хост example.host.com # або ім'я комп'ютера
Ім'я користувача
IdentityFile ~ / .ssh / id_ArbitraryName
Конфігураційному файлу потрібно дозволу 600. Папці SSh потрібно 700.
Сподіваємось, що це допоможе, якщо ви зіткнетеся з проблемою конфігурації, яка дуже пропущена.