SSH з Windows до Linux без введення пароля


11

Я намагаюся використовувати ssh / scp з Windows до Linux без введення пароля.

Це те, що я зробив, і, здається, не працює:

  • створені відкриті та приватні ключі за допомогою генератора ключів Putty (в Windows)
  • зберегли файли як id_rsa.pubіid_rsa
  • скопіював їх у ~/.ssh
  • додано id_rsa.pub до вікна Linux у ~/.ssh/authorized_keys
  • Потім я намагаюся перейти sshдо вікна Linux з Windows, і мені все одно доведеться ввести пароль

Я щось пропускаю?

Відповіді:


10

Вам потрібно запустити агент аутентифікації в Windows.

Наприклад, Pageant , який використовується в поєднанні з PuTTY (графічний клієнт SSH) або Plink (його еквівалент командного рядка).

Вам потрібно буде повідомити Pageant у відкритому ключі вашого SSH-сервера. Після цього він буде працювати з запитами на аутентифікацію вашого сервера під час роботи у фоновому режимі.


2
Примітка: (Це не було очевидно для мене.) Під час відкриття Pageant він відкриється як піктограма в області сповіщень праворуч внизу. Клацніть правою кнопкою миші та натисніть кнопку Додати ключ та виберіть файл .ppk, який був створений із puttygen.
badjr

8

Вам потрібна Pageant .

Перегляньте відеозапис без пароля за допомогою PuTTY та Pageant . І / або повідомлення в блозі Howto: Аутентифікація без пароля SSH за допомогою PuTTY .


1
Спробуйте посилання на текстові підручники замість відео.
кодер

Посилання на блог розірвано. Спробуйте це: tecmint.com/ssh-passwordless-login-with-putty
Кай Ван

2
Посилання в блозі розірвано - точна причина відповідей повинна бути більше, ніж посилання.
Рамхаунд

5

Спробуйте Plink (частина PuTTY)

 plink -v youruser@yourhost.com -pw yourpw "some linux command"

3
+1 для правильної відповіді, але вам краще використовувати пару відкритих / приватних ключів, ніж пароль.
Тед Персіваль

Незважаючи на альтернативу, з plink ви не можете мати нормальний термінал, наприклад: клавіші зі стрілками не працюють для історії
башів

3

Налаштування автентифікації ключів SSH може бути дещо складним. Це здається, що ти покриваєш усі свої бази. Одне, що часто заставляє людей опікуватися - вам потрібно переконатися, що .sshкаталог та його вміст належать вам, а їх читаєте / записуєте лише ви.

Переконайтеся, що запустити це (у всіх своїх .sshкаталогах):

chmod -R 700 on ~/.ssh

Якщо це не працює, увімкніть багатослівний журнал, додавши -vдо своєї sshкоманди (ви можете додати до трьох -vss для більшої багатослівності).



2

Я припускаю, що ваші ключі не захищені паролем, і те, що ви отримуєте, - це не запит на пароль вашого ключа.

~ / .ssh не використовується шпаклівкою на вікні Windows, а в шпаклівці немає налаштування приватного ключа за замовчуванням. Якщо ви використовуєте клієнтський рядок ssh-клієнта, наприклад cygwin, створення каталогу .ssh з вашого будинку буде спрацьовувати. Від шпаклівки вам потрібно буде налаштувати та зберегти сеанс.

У діалоговому вікні конфігурації шпаклівки подивіться на з'єднання -> дані та заповніть поле автоматичного входу. Потім перейдіть до з'єднання -> ssh -> auth і правильно встановіть свій приватний ключ. Потім поверніться до діалогового вікна сеансу та збережіть цей сеанс. Ви також можете встановити ім'я хоста, якщо хочете.

Після того, як ви збережете сеанс, ви можете скористатись "putty -load" збереженою сесією "'.


Також chmod 700 ~ / .ssh на цільовій машині та chmod 644 ~ / .ssh / дозволені ключі. Як тільки я дотримувався ваших інструкцій і правильно встановив дозволи, він почав працювати для мене.
Блістер-арахіс

1

Вам також може знадобитися змінити дозволи на домашній каталог:

chmod 755 ~

1

Я зміг це зробити саме з Windows 7використання -iопції для надання приватного ключа ідентифікації:

ssh -i X: \ win-path \ to \ private-key remoteuser@remote.host.com

за винятком того, що на віддаленому хості мої авторизовані ключі знаходяться в /etc/ssh/authorized_keys/remoteuserі в /etc/ssh/sshd_config, я змінив

#AuthorizedKeysFile     .ssh/authorized_keys
AuthorizedKeysFile      /etc/ssh/authorized_keys/%u

але я не знаю, чи має значення віддалений конфігурація SSH.


1

Все, що вам потрібно, - це sshінструменти для командної лінії між платформами , ssh-keygen& ssh-copy-id. git для Windows включає їх.

Або зробіть це з bashоболонки, встановленої git :

#By default this puts keyfile pair in ~/.ssh/id_rsa & ~/.ssh/id_rsa.pub :

ssh-keygen.exe -t rsa -b 2048 
ssh-copy-id -i ~/.ssh/id_rsa.pub  $remoteuser@$remotehost

# These two chmod lines are needed on unix platforms, probably not on Windows. 
# typically ssh refuses to use a private key file 
# if it is less-well protected than this:
chmod 700 ~/.ssh
chmod 640 ~/.ssh/id_rsa

Або запустіть цей скрипт у PowerShell:

Param(
  [Parameter()][string]$keyfile="id_rsa",
  [Parameter()][string]$remotehost,
  [Parameter()][string]$remoteuser
  )
write-host "# ---------------------------------------------------------------------------------#"
write-host "# Create an RSA public/private key pair, and copy the public key to remote server  #"
write-host "#                                                                                  #"
write-host "# /superuser/96051                                            #"
write-host "#         ssh-from-windows-to-linux-without-entering-a-password/1194805#1194805    #"
write-host "#                                                                                  #"
write-host "# ---------------------------------------------------------------------------------#"

write-host "Keyfile pair will be saved at : ~/.ssh/$keyfile, ~/.ssh/$keyfile.pub"
write-host "And copied to $remoteuser@$remotehost"
write-host ""
write-host "You will need a password for the copy operation."
write-host ""

if( -not $(ls ~/.ssh) ) { mkdir ~/.ssh }
$sshdir=$(get-item ~/.ssh/).Fullname

#By default this puts keyfile pair in ~/.ssh/id_rsa & ~/.ssh/id_rsa.pub :
ssh-keygen.exe -t rsa -b 2048 -f "$sshdir$keyfile"

# ssh-copy-id somehow didn't work in Powershell so I called it via bash
bash -c "ssh-copy-id -i ~/.ssh/$keyfile.pub $remoteuser@$remotehost"

# I'm not sure if these two chmod lines work on windows but 
# typically ssh refuses to use a private key file 
# if it is less-well protected than this:
chmod.exe 700 $sshdir
chmod.exe 640 "$sshdir$keyfile"

Після цього вхід без пароля повинен працювати і для, sshі для scp.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.