Відповіді:
Для кожного користувача: вони повинні генерувати (на своїй локальній машині) свою клавіатуру, використовуючи ssh-keygen -t rsa
( rsa
можна замінити dsa
або rsa1
занадто, хоча ці параметри не рекомендуються). Потім їм потрібно помістити вміст свого відкритого ключа ( id_rsa.pub
) ~/.ssh/authorized_keys
на сервер, на якому ви входите в систему.
Насправді я віддаю перевагу ssh-copy-id , скрипту, знайденому на * nix за замовчуванням (його можна також легко поставити на Mac OS X ), який автоматично робить це для вас. На чоловіковій сторінці:
ssh-copy-id - це скрипт, який використовує ssh для входу у віддалену машину (імовірно, використовуючи пароль для входу, тому автентифікацію пароля слід активувати, якщо ви не зробили певне розумне використання декількох ідентичностей)
Він також змінює дозволи дому віддаленого користувача, ~ / .ssh та ~ / .ssh / санкціоновані_кейси для видалення групової писемності (що інакше не дозволить вам увійти в систему, якщо для віддаленого sshd встановлено StrictModes).
Якщо параметр -i заданий, тоді використовується ідентифікаційний файл (за замовчуванням ~ / .ssh / identitet.pub), незалежно від того, чи є ключі у вашому ssh-агенті.
Хм, не розумій. Просто створіть ключ і почніть. :) ЯК Додатково ви можете заборонити вхід через пароль. Наприклад, / etc / ssh / sshd_config:
PasswordAuthentication no
Це досить прямо вперед , щоб зробити - є просте покрокове керівництво , щоб бути тут .
Основні моменти:
ssh-keygen
на своїй машині. Це створить для вас публічні та приватні ключі.~/.ssh/id_rsa.pub
) ~/.ssh/authorized_keys
на віддалену машину.Важливо пам’ятати, що це дасть кожному, хто має доступ до приватного ключа на вашій машині, такий самий доступ до віддаленої машини, тому при генерації пари ключів ви можете вибрати тут додатковий захист.
Щоб користувачі Windows налаштували шпаклівку
Підсумовуючи сказане іншими, налаштування ключів SSH - це легко і безцінно.
На комп'ютері , який буде SSHing від вас буде потрібно згенерувати пару ключів:
claudius:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/dinomite/.ssh/id_rsa): <ENTER>
Enter passphrase (empty for no passphrase): <PASSPHRASE>
Enter same passphrase again: <PASSPHRASE>
Your identification has been saved in /home/dinomite/.ssh/id_rsa.
Your public key has been saved in /home/dinomite/.ssh/id_rsa.pub.
The key fingerprint is:
a3:93:8c:27:15:67:fa:9f:5d:42:3a:bb:9d:db:93:db dinomite@claudius
Просто натисніть клавішу Enter, де зазначено, і введіть парольну фразу при появі запиту - в ідеалі це відрізняється від вашого звичайного пароля для входу як на поточному хості, так і на ті, на які ви будете SSHing.
Далі, вам потрібно скопіювати ключ , який ви тільки що згенерований на хост , який ви хочете SSH до . У більшості дистрибутивів Linux для цього є інструмент ssh-copy-id
:
claudius:~$ ssh-copy-id caligula.dinomite.net
Now try logging into the machine, with "ssh 'caligula.dinomite.net'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
Якщо у вашому розповсюдженні цього немає, слід скопіювати ключ до цільового хоста та додати його до (можливо, існуючого) .ssh/authorized_keys
файлу:
claudius:~$ scp .ssh/id_dsa.pub caligula.dinomite.net:
id_dsa.pub 100% 1119 1.1KB/s 00:00
claudius:~$ ssh caligula.dinomite.net
Last login: Sat May 9 10:32:30 2009 from claudius.csh.rit.edu
Caligula:~$ cat id_dsa.pub >> .ssh/authorized_keys
Нарешті, щоб отримати максимальну вигоду від ключів SSH, вам потрібно буде запустити агент SSH. Якщо ви використовуєте робоче середовище (Gnome, KDE та ін.), То лише вихід із системи та повернення запустить для вас SSH-агент. Якщо немає, то ви можете додати наступні рядки в оболонці RC файл ( .bashrc
, .profile
і т.д.):
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
eval `$SSHAGENT $SSHAGENTARGS`
trap "kill $SSH_AGENT_PID" 0
fi
Це призначено як контрольний список. Якщо дотримуватися цього покроково, слід охоплювати найпоширеніші доступи до без паролів. Більшість цих моментів згадуються в інших місцях; це агрегація.
На кожному апараті під обліковим записом повинен бути ~/.ssh
каталог, chmod 700
який походить або отримує з'єднання.
(Приватний) ключ повинен бути згенерований без парольної фрази, або можна запустити агент, який міститиме розшифровану версію ключа, що містить парольну фразу для клієнтів. Запустіть агент із ssh-agent $SHELL
. Це $SHELL
частина, яка зайняла мені час, щоб знайти. Перегляньте довідкову сторінку, оскільки тут є різноманітні деталі, якщо ви хочете використовувати агент.
Не забувайте, що останніми версіями sshd не приймаються слабкі (<2048 бітові DSA) клавіші.
Далі повинні бути зроблено на стороні клієнта машині відбувається з'єднання.
Ваш приватний ключ повинен бути розміщений ~/.ssh/id_rsa
або, ~/.ssh/id_dsa
як це доречно. Ви можете використовувати інше ім'я, але тоді воно повинно бути включено в параметр -i в команді ssh на машині, що створює файл, щоб явно вказати приватний ключ.
Ваш приватний ключ повинен бути chmod 600
.
Перевірте, чи ваша домашня папка chmod 700
.
Тепер дозволити машині отримувати запит. Поширена модель - це коли адміністратор надає вам доступ до машини, якою ви не володієте (наприклад, спільного веб-хостингу). Тому ідея ssh полягає в тому, що ви пропонуєте свій відкритий ключ тому, хто надає вам рахунок. Ось чому ви, як правило, не ставите приватні ключі на апарат, який отримує запити. Але якщо ви хочете, щоб ця машина також виконувала вихідний ssh, тоді ви повинні ставитися як до вихідної машини з описаними вище кроками.
~/.ssh/authorized_keys
під обліковим записом , яка буде приймати з'єднання. Тут також можна розмістити інші ключі, дозволених підключатися через цей рахунок. Особливо складна річ, якщо ви знаходитесь у vi і вставляєте ключ у файл із буфера вставки в PuTTY, це: ключ починається з "ssh-". Якщо ви не перебуваєте в режимі вставки, перший "s" переведе vi в режим вставки, а решта клавіші буде виглядати просто чудово. Але вам не вистачить "s" на початку ключа. Мені потрібні були дні, щоб знайти це.chmod 600 ~/.ssh/authorized_keys
. Він повинен бути як мінімум gw.Як вже говорили інші, ваші користувачі повинні робити собі клавіші на своїх клієнтських машинах за допомогою ssh-keygen та додавати їх відкритий ключ до ~ / .ssh / санкціонованих ключів на машині, на якій вони хочуть увійти.
Для більш детальної інформації, проте, я настійно рекомендую SSH, The Secure Shell .
Тут є хороша порада, тому я не повторюю її. Після того, як ви встановите один сервер, який дозволяє входити за допомогою клавіш, ви можете налаштувати інших, щоб вони зробили те ж саме з цим вкладишем:
remote=server1 server2 server3 server4
for r in $remote; do echo connecting to $r; tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh $r "tar zxf -; chmod 700 .ssh" ; done
Просто введіть CD у свій домашній каталог, визначте віддалену змінну як одне або багато імен серверів і зробіть купу відразу. Пароль, який він запитує, буде вашим ssh-паролем для віддаленого сервера. Звичайно, ви можете використовувати спрощену версію без for-loop:
tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh YOUR_SERVER_NAME_HERE "tar ztvf -; chmod 700 .ssh"
ПАМ’ЯТАЙТЕ. Копіюйте лише свої відкриті ключі. Ви не хочете, щоб ваші приватні ключі сиділи на якомусь сервері, де кожен із судо може скопіювати їх і змусити ваші парольні фрази.