8

Я пытаюсь использовать ssh/scp из Windows в Linux без ввода пароля.

Это то, что я сделал, и это не похоже на работу:

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

Я что-то пропустил?

8 ответов8

7

Вам нужен конкурс.

Посмотрите видео Логин без пароля с PuTTY и Pageant. И / или сообщение в блоге Howto: SSH-аутентификация без пароля с PuTTY.

6

Вы должны запустить агент аутентификации в Windows.

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

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

3

Попробуйте Plink (часть PuTTY)

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

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

Обязательно запустите это (для всех ваших каталогов .ssh ):

chmod -R 700 on ~/.ssh

Если это не сработает, включите подробное ведение журнала, добавив -v к своей команде ssh (вы можете добавить до трех -vs s для большей детализации).

2

Я предполагаю, что ваши ключи не защищены паролем, и вы получаете не запрос пароля вашего ключа.

~/.ssh не используется замазкой на стороне окон, и у замазки нет настройки закрытого ключа по умолчанию. Если вы используете ssh-клиент командной строки, такой как cygwin, создание каталога .ssh вне вашего дома будет работать. От замазки вам нужно будет настроить и сохранить сеанс.

В диалоговом окне конфигурации замазки посмотрите на соединение -> данные и заполните поле имени пользователя для автоматического входа. Затем перейдите в раздел connection -> ssh -> auth и правильно установите свой закрытый ключ. Затем вернитесь в диалог сеанса и сохраните этот сеанс. Вы также можете установить имя хоста, если хотите.

Когда у вас есть сохраненный сеанс, вы можете использовать 'putty -load "savesession"'.

1

Вам также может понадобиться изменить права доступа в вашем домашнем каталоге:

chmod 755 ~
0

Я попробовал несколько способов сделать это, и первый, который работал для меня, был ssh-copy-id

#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


# I'm not sure if these two chmod lines are needed on windows but 
# 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

Самый простой способ получить инструменты ssh - это установить git для Windows.

Я выполнил вышеупомянутые команды из git-установленной оболочки bash. Запуск ssh-copy-id из powershell почему-то не сработал, поэтому я закончил с этим скриптом 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 "# https://superuser.com/questions/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"
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"
0

Я смог сделать это именно из 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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .