Как я могу настроить пароль без SSH?

Вот версия awk, которая может сработать для вас

awk '{OFS=","; $3=$2; sub(/[^C]+/,"",$3); gsub(/[^C]+/,"#",$3); print}' file

Она просто дублирует второе поле, затем разбивает любую непустую начальную последовательность символов не-C в дубликате, а затем заменяет каждая оставшаяся последовательность не-C символов в ней с #.

227
задан 4 June 2011 в 23:43

84 ответа

ответ

выполнения этой команды:

ssh-keygen

тогда вам потребуется скопировать новый ключ к вашему серверу:

ssh-copy-id user@host ## or if your server uses custom port no: ssh-copy-id "user@host -p 1234"

после того, как ключ копируется, СШ в машину как обычно:

ssh user@host

теперь вы можете войти без ввода пароля от конкретной машины выполнены команды.

пример

not-marco@rinzwind-desktop:~$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/not-marco/.ssh/id_rsa): Created directory '/home/not-marco/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/not-marco/.ssh/id_rsa. Your public key has been saved in /home/not-marco/.ssh/id_rsa.pub. The key fingerprint is: b1:25:04:21:1a:38:73:38:3c:e9:e4:5b:81:e9:ac:0f not-marco@rinzwind-desktop The key's randomart image is: +--[ RSA 2048]----+ |.o= . oo. | |*B.+ . . | |*=o . o . | | = . = | |. o S | |E. | | o | | . | | | +-----------------+ not-marco@rinzwind-desktop:~$ ssh-copy-id not-marco@server not-marco@server's password: Now try logging into the machine, with "ssh 'not-marco@server'", and check in: ~/.ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting.

объяснение

это предполагает, что вы уже можете подключиться к вашему серверу по SSH.

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

сначала создать свою пару ключей SSH, выполнив ssh-keygen это создаст id_rsa и файл id_rsa.pub. Файл pub это то, что идет на сервера, закрытого ключа ([F9] и) то, что остается с Вами и как вы сами себя идентифицируете. Затем скопируем публичный ключ на сервер с [F10] для замены пользователя с удаленным пользователем и сервером с машиной DNS-имя или IP-адрес. Он будет запрашивать Ваш пароль SSH, введите его, и если все завершится успешно, вы будете в состоянии получить доступ к устройству через ssh user@server без пароля.

литература

https://help.ubuntu.com/community/SSH/OpenSSH/Keys
229
ответ дан 31 July 2018 в 10:24
  • 1
    @Oxwivi этот ответ - более правильный способ сделать это, но он кажется длиннее. Все, что вам нужно сделать, это ввести ssh-keygen следуйте инструкциям на экране, затем введите ssh-copy-id user@server, заменив пользователя удаленным пользователем и сервером удаленной машиной – Marco Ceppi♦ 4 June 2011 в 23:36
  • 2
    У меня эта ошибка "Агент признался неподписание с помощью ключа". каждый раз при попытке входа в систему после выполнения этой процедуры. Было принято решение выполнить "> СШ-добавить" на локальной машине и теперь я могу подключиться к удаленной машине, как ожидалось. – jmbouffard 5 July 2011 в 20:23
  • 3
    Стоит упомянуть, что если вам нужно использовать пользовательский порт для @server, вам нужно сделать это с помощью: ssh-copy-id "not-marco@127.0.0.1 -p 1234". – s3m3n 19 April 2013 в 18:36
  • 4
    @Rinzwind: Означает ли это, что я не могу когда-либо аутентифицироваться с неизвестного клиента / машины на моем сервере, если отключить аутентификацию passwd и amp; разрешить только проверку подлинности. Есть ли способ разрешить вход с неизвестного компьютера с помощью закрытого ключа, который был создан для того, чтобы известный / настроенный клиент мог взаимодействовать с сервером? Я имею в виду, это личный ключ портативный & amp; может использоваться для аутентификации на сервере с других компьютеров, в случае чрезвычайных потребностей? – Rajat Gupta 28 February 2014 в 13:10
  • 5
    Но сервер по-прежнему просит пароль, – lerner 24 January 2018 в 12:41
отключить проверку пароля, потому что много людей с SSH серверы используют слабые пароли, многие интернет-злоумышленники будут искать SSH сервер, а затем начать пароли угадывать наобум. Злоумышленник может попробовать тысячи паролей в час, и думаю, даже самый сильный пароль дали достаточно времени. Рекомендуемым решением является использование SSH-ключей вместо паролей. Как трудно догадаться, как обычный SSH-ключ, пароль должен содержать 634 случайных букв и цифр. Если вы всегда сможете войти в свой компьютер с ключом SSH, вы должны отключить проверку пароля. Если отключить проверку пароля, это будет возможно только для подключения от компьютеров одобренным. Это существенно улучшает вашу безопасность, но делает невозможным для вас, чтобы подключить к своему компьютеру у друга на ПК без предварительного одобрения компьютер или собственный ноутбук, когда вы случайно удалили ключ. Рекомендуется отключить проверку пароля, если у вас нет особых причин не делать этого. Чтобы отключить проверку пароля, найдите следующую строку в файле sshd_config файл: #PasswordAuthentication yes заменить ее на строку, которая выглядит следующим образом: PasswordAuthentication no после того как вы сохранили файл и перезапустить ваш сервер SSH, Вы не должны быть предложено для пароля при входе в систему.

https://help.ubuntu.com/community/SSH/OpenSSH/Configuring#disable-password-authentication

229
ответ дан 31 July 2018 в 11:27

Ответ

Выполните следующие команды:

ssh-keygen

Затем вам нужно скопировать новый ключ на ваш сервер:

ssh-copy-id user@host ## or if your server uses custom port no: ssh-copy-id "user@host -p 1234"

После ключ скопирован, ssh в машину, как обычно:

ssh user@host

Теперь вы можете войти без ввода пароля с конкретной машины, на которой выполнялись команды.

Пример

not-marco@rinzwind-desktop:~$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/not-marco/.ssh/id_rsa): Created directory '/home/not-marco/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/not-marco/.ssh/id_rsa. Your public key has been saved in /home/not-marco/.ssh/id_rsa.pub. The key fingerprint is: b1:25:04:21:1a:38:73:38:3c:e9:e4:5b:81:e9:ac:0f not-marco@rinzwind-desktop The key's randomart image is: +--[ RSA 2048]----+ |.o= . oo. | |*B.+ . . | |*=o . o . | | = . = | |. o S | |E. | | o | | . | | | +-----------------+ not-marco@rinzwind-desktop:~$ ssh-copy-id not-marco@server not-marco@server's password: Now try logging into the machine, with "ssh 'not-marco@server'", and check in: ~/.ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting.

Объяснение

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

Вам нужно создать SSH Keypair, который позволит вам идентифицируйте вас как себя, не используя пароль. Вы можете выбрать защиту ключей с кодом доступа, если хотите, но это может быть пустым, позволяя полностью доступ к SSH без пароля.

Сначала создайте свою ключевую пару SSH, запустив ssh-keygen, это создаст id_rsa и id_rsa.pub. Файл pub - это то, что происходит на серверах, закрытый ключ (id_rsa) - это то, что остается с вами и как вы себя идентифицируете. Затем скопируйте открытый ключ на ваш сервер с ssh-copy-id user@server, заменив пользователя удаленным пользователем и сервером на имя или IP-адрес компьютера. Он будет запрашивать пароль SSH, вводить его, и если все будет успешно завершено, вы сможете получить доступ к машине через ssh user@server, не требуя пароля.

Ссылки

https://help.ubuntu.com/community/SSH/OpenSSH/Keys
229
ответ дан 2 August 2018 в 03:23
Отключить аутентификацию паролей Поскольку многие люди с SSH-серверами используют слабые пароли, многие онлайн-злоумышленники будут искать SSH-сервер, а затем начнут угадывать пароли наугад. Злоумышленник может пробовать тысячи паролей через час и угадывать даже самый сильный пароль, заданный достаточно времени. Рекомендуемым решением является использование ключей SSH вместо паролей. Чтобы как можно догадаться, как обычный SSH-ключ, пароль должен содержать 634 случайных буквы и цифры. Если вы всегда сможете войти на свой компьютер с помощью SSH-ключа, вы должны полностью отключить аутентификацию паролей. Если вы отключите аутентификацию паролем, можно будет только подключиться с компьютеров, которые вы специально одобрили. Это значительно улучшает вашу безопасность, но делает невозможным подключение к вашему компьютеру с ПК друга без предварительного одобрения ПК или с вашего собственного ноутбука при случайном удалении ключа. Рекомендуется отключить аутентификацию по паролю, если у вас нет конкретной причины. Чтобы отключить аутентификацию паролей, найдите следующую строку в файле sshd_config: #PasswordAuthentication yes замените ее на строку, которая выглядит так: PasswordAuthentication no После того, как вы сохранили файл и перезапустили свой SSH-сервер, вас даже не спрашивают для пароля при входе в систему.

https://help.ubuntu.com/community/SSH/OpenSSH/Configuring#disable-password-authentication

229
ответ дан 4 August 2018 в 19:20
Отключить аутентификацию паролей Поскольку многие люди с SSH-серверами используют слабые пароли, многие онлайн-злоумышленники будут искать SSH-сервер, а затем начнут угадывать пароли наугад. Злоумышленник может пробовать тысячи паролей через час и угадывать даже самый сильный пароль, заданный достаточно времени. Рекомендуемым решением является использование ключей SSH вместо паролей. Чтобы как можно догадаться, как обычный SSH-ключ, пароль должен содержать 634 случайных буквы и цифры. Если вы всегда сможете войти на свой компьютер с помощью SSH-ключа, вы должны полностью отключить аутентификацию паролей. Если вы отключите аутентификацию паролем, можно будет только подключиться с компьютеров, которые вы специально одобрили. Это значительно улучшает вашу безопасность, но делает невозможным подключение к вашему компьютеру с ПК друга без предварительного одобрения ПК или с вашего собственного ноутбука при случайном удалении ключа. Рекомендуется отключить аутентификацию по паролю, если у вас нет конкретной причины. Чтобы отключить аутентификацию паролей, найдите следующую строку в файле sshd_config: #PasswordAuthentication yes замените ее на строку, которая выглядит так: PasswordAuthentication no После того, как вы сохранили файл и перезапустили свой SSH-сервер, вас даже не спрашивают для пароля при входе в систему.

https://help.ubuntu.com/community/SSH/OpenSSH/Configuring#disable-password-authentication

229
ответ дан 6 August 2018 в 03:32

Отключить аутентификацию паролей

Поскольку многие люди с SSH-серверами используют слабые пароли, многие онлайн-злоумышленники будут искать SSH-сервер, а затем начнут угадывать пароли наугад. Злоумышленник может пробовать тысячи паролей через час и угадывать даже самый сильный пароль, заданный достаточно времени. Рекомендуемым решением является использование ключей SSH вместо паролей. Чтобы как можно догадаться, как обычный SSH-ключ, пароль должен содержать 634 случайных буквы и цифры. Если вы всегда сможете войти на свой компьютер с помощью SSH-ключа, вы должны полностью отключить аутентификацию пароля.

Если вы отключите аутентификацию по паролю, можно будет только подключиться с компьютеров, которые у вас есть утвержден. Это значительно улучшает вашу безопасность, но делает невозможным подключение к вашему компьютеру с компьютера друга без предварительного одобрения ПК или с вашего собственного ноутбука при случайном удалении ключа.

Рекомендуется чтобы отключить аутентификацию паролей, если у вас нет конкретной причины.

Чтобы отключить аутентификацию пароля, найдите следующую строку в файле sshd_config:

  #PasswordAuthentication yes  

замените его строкой, которая выглядит так:

  PasswordAuthentication no  

После того, как вы сохранили файл и перезапустили его ваш SSH-сервер, вам не нужно даже запрашивать пароль при входе в систему.

https://help.ubuntu.com/community/SSH/OpenSSH/Configuring # отключить-пароль аутентификации

229
ответ дан 7 August 2018 в 21:20

Отключить аутентификацию паролей

Поскольку многие люди с SSH-серверами используют слабые пароли, многие онлайн-злоумышленники будут искать SSH-сервер, а затем начнут угадывать пароли наугад. Злоумышленник может пробовать тысячи паролей через час и угадывать даже самый сильный пароль, заданный достаточно времени. Рекомендуемым решением является использование ключей SSH вместо паролей. Чтобы как можно догадаться, как обычный SSH-ключ, пароль должен содержать 634 случайных буквы и цифры. Если вы всегда сможете войти на свой компьютер с помощью SSH-ключа, вы должны полностью отключить аутентификацию пароля.

Если вы отключите аутентификацию по паролю, можно будет только подключиться с компьютеров, которые у вас есть утвержден. Это значительно улучшает вашу безопасность, но делает невозможным подключение к вашему компьютеру с компьютера друга без предварительного одобрения ПК или с вашего собственного ноутбука при случайном удалении ключа.

Рекомендуется чтобы отключить аутентификацию паролей, если у вас нет конкретной причины.

Чтобы отключить аутентификацию пароля, найдите следующую строку в файле sshd_config:

  #PasswordAuthentication yes  

замените его строкой, которая выглядит так:

  PasswordAuthentication no  

После того, как вы сохранили файл и перезапустили его ваш SSH-сервер, вам не нужно даже запрашивать пароль при входе в систему.

https://help.ubuntu.com/community/SSH/OpenSSH/Configuring # отключить-пароль аутентификации

229
ответ дан 10 August 2018 в 09:39

Отключить аутентификацию паролей

Поскольку многие люди с SSH-серверами используют слабые пароли, многие онлайн-злоумышленники будут искать SSH-сервер, а затем начнут угадывать пароли наугад. Злоумышленник может пробовать тысячи паролей через час и угадывать даже самый сильный пароль, заданный достаточно времени. Рекомендуемым решением является использование ключей SSH вместо паролей. Чтобы как можно догадаться, как обычный SSH-ключ, пароль должен содержать 634 случайных буквы и цифры. Если вы всегда сможете войти на свой компьютер с помощью SSH-ключа, вы должны полностью отключить аутентификацию пароля.

Если вы отключите аутентификацию по паролю, можно будет только подключиться с компьютеров, которые у вас есть утвержден. Это значительно улучшает вашу безопасность, но делает невозможным подключение к вашему компьютеру с компьютера друга без предварительного одобрения ПК или с вашего собственного ноутбука при случайном удалении ключа.

Рекомендуется чтобы отключить аутентификацию паролей, если у вас нет конкретной причины.

Чтобы отключить аутентификацию пароля, найдите следующую строку в файле sshd_config:

  #PasswordAuthentication yes  

замените его строкой, которая выглядит так:

  PasswordAuthentication no  

После того, как вы сохранили файл и перезапустили его ваш SSH-сервер, вам не нужно даже запрашивать пароль при входе в систему.

https://help.ubuntu.com/community/SSH/OpenSSH/Configuring # отключить-пароль аутентификации

229
ответ дан 13 August 2018 в 15:49
  • 1
    Это самый правильный правильный ответ, но хороший для безопасности! Также отключить регистрацию root еще один хороший – FreeSoftwareServers 21 December 2015 в 23:15
  • 2
    [D0] PasswordAuthentication no влияет на всех пользователей? Если нет, как отключить его для обычных пользователей, но оставить его неизменным для root, пока я его тестирую? Я действительно не хочу вскрывать его и полностью блокировать. – Adam 17 September 2017 в 19:13
  • 3
    Сохраните сеанс ssh, чтобы вы могли его изменить. Вы хотите отключить пароли AND root. Да, вы можете его путать. Не;) – Thufir 17 September 2017 в 21:04
  • 4
    Во время ssh у меня есть ошибка Permission denied (publickey). с PasswordAuthentication no . Что мне делать? Я изменяю PasswordAuthentication no на другом хосте? – ParisaN 10 May 2018 в 10:22

Ответ

Выполните следующие команды:

  ssh-keygen  

Затем вам нужно будет скопировать новый ключ к вашему серверу :

  ssh-copy-id user @ host ## или если ваш сервер использует пользовательский порт no: ssh-copy-id "user @ host -p  1234 " 

После копирования ключа ssh в машину как обычно:

  ssh user @ host  

Теперь вы можете войти без ввода пароля с определенного компьютера, на котором выполнялись команды.

Пример

  not-marco @ rinzwind-desktop: ~ $ ssh-keygen  Создание пары ключей public / private rsa.  Введите файл для сохранения ключа (/home/not-marco/.ssh/id_rsa): Создан каталог '/home/not-marco/.ssh'.  Введите парольную фразу (пустая для кодовой фразы): Введите еще одну фразу: Ваша идентификация сохранена в /home/not-marco/.ssh/id_rsa.  Ваш открытый ключ был сохранен в /home/not-marco/.ssh/id_rsa.pub.  Ключ отпечатка пальца: b1: 25: 04: 21: 1a: 38: 73: 38: 3c: e9: e4: 5b: 81: e9: ac: 0f not-marco @ rinzwind-desktop Случайное изображение ключа: +  - [RSA 2048] ---- + | .o =.  оо.  |  | * B. +.  ,  |  | * = o.  o.  |  |  знак равно  = |  |.  o S |  | E.  |  |  o |  |  ,  |  |  |  + ----------------- + not-marco @ rinzwind-desktop: ~ $ ssh-copy-id not-marco @ server not-marco @ серверный пароль: теперь попробуйте войти в  машины, с «ssh 'not-marco @ server» и зайдите в: ~ / .ssh / authorized_keys, чтобы убедиться, что мы не добавили лишние ключи, которых вы не ожидали.   

Объяснение

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

Вам нужно будет создать SSH Keypair, который будет позволяют вам идентифицировать вас как самостоятельно, не используя пароль. Вы можете выбрать защиту ключей с кодом доступа, если хотите, но это может быть пустым, что позволяет полностью получить доступ к SSH без пароля.

  1. Сначала создайте свою ключевую пару SSH, запустив ssh-keygen это создаст файл id_rsa и id_rsa.pub . Файл pub - это то, что идет на серверах, закрытый ключ ( id_rsa ) - это то, что остается с вами, и как вы себя идентифицируете.
  2. Next скопируйте открытый ключ на ваш сервер с помощью ssh-copy-id user @ server , заменив пользователя удаленным пользователем и сервером именем или IP-адресом компьютера. Он запросит пароль SSH, занесет его, и если все будет успешно завершено, вы сможете получить доступ к машине через ssh user @ server без необходимости пароля.

Ссылки

229
ответ дан 15 August 2018 в 22:39
  • 1
    @Oxwivi этот ответ - более правильный способ сделать это, но он кажется длиннее. Все, что вам нужно сделать, это ввести ssh-keygen , следуя инструкциям на экране, затем введите ssh-copy-id user @ server , заменив пользователя удаленным пользователем и сервером удаленная машина – Marco Ceppi♦ 4 June 2011 в 23:36
  • 2
    У меня была эта ошибка. «Агент допустил отказ подписать с помощью ключа». каждый раз при попытке войти в систему после выполнения этой процедуры. Решение заключалось в том, чтобы запустить & quot; & gt; SSH-добавить & Quot; на локальном компьютере, и теперь я могу зайти на удаленный компьютер, как ожидалось. – jmbouffard 5 July 2011 в 20:23
  • 3
    Стоит отметить, что если вам нужно использовать пользовательский порт для @server, вам нужно сделать это с помощью: ssh-copy-id & quot; not-marco@127.0.0.1 -p 1234 & quot; . – s3m3n 19 April 2013 в 18:36
  • 4
    @Rinzwind: Означает ли это, что я не могу когда-либо аутентифицироваться с неизвестного клиента / машины на моем сервере, если отключить аутентификацию passwd и amp; разрешить только проверку подлинности. Есть ли способ разрешить вход с неизвестного компьютера с помощью закрытого ключа, который был создан для того, чтобы известный / настроенный клиент мог взаимодействовать с сервером? Я имею в виду, это личный ключ портативный & amp; может использоваться для аутентификации на сервере с других компьютеров, в случае чрезвычайных потребностей? – Rajat Gupta 28 February 2014 в 13:10
  • 5
    Но сервер по-прежнему просит пароль, – lerner 24 January 2018 в 12:41

я обычно использую sshpass для этого, установите его с sudo apt-get install sshpass и использовать его, как это

sshpass -p 'password' ssh your_username@your_server
18
ответ дан 25 July 2018 в 21:47
  • 1
    Почему бы не использовать ключи SSH? – enzotib 6 December 2011 в 23:39
  • 2
    Не "почему нет" ситуации, он до сих пор работает идеально, без добавления ключей, его просто еще один способ я бы сказал. – Bruno Pereira 7 December 2011 в 00:05
  • 3
    Спасибо за информацию о sshpass, никогда не слышал о нем раньше. – Panther 7 December 2011 в 00:39
  • 4
    Ключи SSH являются "правильный" ответ на вопрос, но sshpass - это очень полезный хак в тех случаях, когда вы не можете изменить метод проверки подлинности на удаленном сервере! – Jacob Krall 14 March 2014 в 21:27
  • 5
    Это очень опасно, вы будете держать в bash_history или любой простые пароли для хозяев, к которым вы подключаетесь.. – kappa 22 July 2015 в 15:48

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

вот один из множества коротких руководств для вас. Это имеет решающее значение для безопасности этого метода, что сгенерированный закрытый ключ остается Частная! Вы никогда не должны делиться ею ни с кем или позволять доступ к ней в любом качестве.

эта команда создает достаточно сильный ключ в ~/.ssh/:

ssh-keygen -b 4096

в ~/.ssh/ вы найдете свой публичный ключ id_rsa.pub. Его содержание должно быть дополнено вашего сервера файл authorized_keys, транспортируя через переносные носители (флэш-накопитель) или при включение проверки пароля на сервере, то с помощью ssh-copy-id ~/.ssh/id_rsa.pub username@server, а затем снова его отключить.

если вы решили обеспечить свой ключ с паролем (в первом шаге), вы можете использовать ssh-agent либо Ubuntu брелок для гарантии, что фразу локально, поэтому вам не придется вводить его все время.

4
ответ дан 25 July 2018 в 21:47

[решение специально для пользователей, использующих Windows для ssh на своих удаленных машинах, включая облачные изображения на облаке AWS Cloud и GCE Cloud]

(Если это сработает для вас, вы получите высокую оценку. терпение.)

(Отказ от ответственности)

Недавно использовалось это решение для удаленного входа в систему новых развернутых изображений vm на GCE.

Используемые инструменты :

puttygen [puttygen download] winscp [winscp download]

Шаги для выполнения:

puttygen [puttygen download ] Загрузите открытый ключ на ваш сервер в облаке или удаленном месте.

Описание (как это сделать):

1. Создайте ключ / пару или используйте существующий закрытый ключ

(у меня есть закрытый ключ)

Откройте puttygen, нажмите кнопку загрузки и выберите файл закрытого ключа (*.pem) .

(у меня нет личного ключа)

Откройте puttygen, выберите нужный тип ключа SSH2 DSA (вы можете использовать RSA или DSA) внутри раздел «Параметры» ... и важно, чтобы вы оставили поле кодовой фразы пустым, нажмите «Создать» и следуйте инструкциям для генерации пары ключей (общедоступных / частных).

(из источника 1, ссылка ниже)

2. Создайте новый файл «authorized_keys» (с записью)

Скопируйте данные открытого ключа из «Открытого ключа для вставки в файл OpenSSH authorized_keys» в разделе «Генератор ключей PuTTY» и вставьте ключевые данные в « authorized_keys ".

Убедитесь, что в этом файле есть только одна строка текста.

3. Загрузить ключ на сервер linux

Открыть puttygen, Выбрать протокол SFTP и войти в систему с вашими учетными данными ssh. Выберите нужный тип ключа SSH2 DSA (вы можете использовать RSA или DSA) в разделе «Параметры» ... и важно оставить поле кодовой фразы пустым,

Загрузите файл authorized_keys в домашний каталог на удаленном компьютере.

4. Установите правильные разрешения

Создайте каталог .ssh (если не существует)

Скопируйте файл authorized_keys в каталог .ssh. (это заменит любой существующий файл authorized_keys, обратите внимание на это).

Если файл существует, просто добавьте содержимое этого файла в существующий файл.

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

$ sudo chmod 700 .ssh && chmod 600 .ssh/authorized_keys

Теперь вы сможете ssh на удаленную машину без ввода учетных данных каждый раз.

Дальнейшее чтение:

Загружает открытый ключ на ваш сервер в облаке или удаленном месте. winscp [winscp download] puttygen загрузить winscp загрузить
9
ответ дан 25 July 2018 в 21:47

введите следующие команды:

ssh-keygen Нажмите клавишу ввод, пока не получишь приглашения ssh-copy-id -i root@ip_address (это как запросит пароль и хост-системы) ssh root@ip_address

теперь вы должны быть в состоянии войти без пароля.

30
ответ дан 25 July 2018 в 21:47

Я обычно делаю это так:

ssh-keygen -t rsa

(При запросе пароля оставите его пустым)

Затем: cat ~/.ssh/id_rsa.pub | ssh username@hostname 'cat >> .ssh/authorized_keys'

(для этого требуется, чтобы папка .ssh находилась в домашнем каталоге на целевом имени хоста с файлом authorized_keys)

Конечно, замените имя пользователя на желаемое имя пользователя и имя хоста с желаемым именем хоста или IP-адресом

После этого просто установите SSH в это поле так же, как вы привыкли.

20
ответ дан 25 July 2018 в 21:47
  • 1
    Насчет touch и команда chmod в ответ Rinzwind это? – Oxwivi 4 June 2011 в 23:29
  • 2
    Вам нужно выдать файл [F1], чтобы 0600 или это не будет работать – Marco Ceppi♦ 4 June 2011 в 23:36
  • 3
    Это действительно помогло, потому что я не могу получить SSH-копия-удостоверение личности, чтобы работать для root на моем сервере. он должен быть корневой, в ситуации, когда backuppc (или любой другой демон) должен по SSH на другую машину. – Adam 27 August 2016 в 23:11

Я хотел бы добавить ответ для тех, кто может найти, что они должны ввести пароль, даже если они прочитали все ответы здесь, потому что вы установили IdentitiesOnly как «да». И ответ здесь может сэкономить вам много времени, чтобы управлять несколькими ключами, являясь ключами для git или сервера.

После того, как я сгенерировал ключ и скопировал его на сервер:

ssh-keygen ssh-copy-id -i ~/.ssh/12gpu_server.pub lerner@192.168.20.160

Я обнаружил, что это не сработало.

Затем я пошел проверить файл ~/.ssh/config, я увидел это внизу:

Host * IdentitiesOnly yes

Затем я добавляю это выше:

Host 12gpu HostName 192.168.20.160 User lerner IdentityFile ~/.ssh/12gpu_server

Я могу просто войти в систему, введя ssh 12gpu.

Затем вы можете добавить несколько ssh-ключей, используя ваши любимые имена, и вам нужно только добавить настройки, такие как четыре строки, в файл конфигурации.

Хост - это имя, которое вы хотите ввести при подключении сервера позже; hostName - это ip сервера; Пользователь - это имя пользователя, на котором вы заходите на сервер; и файл идентификации - это файл, в котором вы храните ключ, который вы создали.

1
ответ дан 25 July 2018 в 21:47
Отключить аутентификацию паролей Поскольку многие люди с SSH-серверами используют слабые пароли, многие онлайн-злоумышленники будут искать SSH-сервер, а затем начнут угадывать пароли наугад. Злоумышленник может пробовать тысячи паролей через час и угадывать даже самый сильный пароль, заданный достаточно времени. Рекомендуемым решением является использование ключей SSH вместо паролей. Чтобы как можно догадаться, как обычный SSH-ключ, пароль должен содержать 634 случайных буквы и цифры. Если вы всегда сможете войти на свой компьютер с помощью SSH-ключа, вы должны полностью отключить аутентификацию паролей. Если вы отключите аутентификацию паролем, можно будет только подключиться с компьютеров, которые вы специально одобрили. Это значительно улучшает вашу безопасность, но делает невозможным подключение к вашему компьютеру с ПК друга без предварительного одобрения ПК или с вашего собственного ноутбука при случайном удалении ключа. Рекомендуется отключить аутентификацию по паролю, если у вас нет конкретной причины. Чтобы отключить аутентификацию паролей, найдите следующую строку в файле sshd_config: #PasswordAuthentication yes замените ее на строку, которая выглядит так: PasswordAuthentication no После того, как вы сохранили файл и перезапустили свой SSH-сервер, вас даже не спрашивают для пароля при входе в систему.

https://help.ubuntu.com/community/SSH/OpenSSH/Configuring#disable-password-authentication

7
ответ дан 25 July 2018 в 21:47
  • 1
    @Oxwivi этот ответ более правильный способ сделать это - но, кажется, больше. Все, что вам нужно сделать, это тип ssh-keygen следуйте инструкциям на экране, затем введите ssh-copy-id user@server замена пользователя с удаленным пользователем и сервером с удаленного компьютера – Marco Ceppi♦ 4 June 2011 в 23:36
  • 2
    У меня эта ошибка "Агент признался неподписание с помощью ключа". каждый раз при попытке входа в систему после выполнения этой процедуры. Было принято решение выполнить "> СШ-добавить" на локальной машине и теперь я могу подключиться к удаленной машине, как ожидалось. – jmbouffard 5 July 2011 в 20:23
  • 3
    Стоит упомянуть, что если вам нужно использовать пользовательский порт для @server, вам нужно сделать это с помощью: ssh-copy-id "not-marco@127.0.0.1 -p 1234". – s3m3n 19 April 2013 в 18:36
  • 4
    @Rinzwind: значит ли это, что я никогда не может пройти проверку подлинности от неизвестного клиента/машина на мой сервер, если я отключу пароль аутентификации и разрешить только ключ проверки подлинности. Есть ли способ, чтобы разрешить вход из неизвестной машины с использованием закрытого ключа, который был создан для известного/настроенный клиент для общения с сервером? Я имею в виду, это частный ключ портативный и может быть использован для аутентификации себя на сервере от других машин, в случае экстренной необходимости ?? – Rajat Gupta 28 February 2014 в 13:10
  • 5
    Что делать, если я хочу ssh для многих систем без паролей? Этот метод перезаписывает существующие ключи, и я могу использовать ssh для последней добавленной системы только без пароля. – Ramana Reddy 5 May 2015 в 14:46
  • 6
    Это самый правильный правильный ответ, но хороший для безопасности! Также отключить регистрацию root еще один хороший – FreeSoftwareServers 21 December 2015 в 23:15
  • 7
    [F1] влияет на всех пользователей? Если нет, как отключить его для обычных пользователей, но оставить его неизменным для root, пока я его тестирую? Я действительно не хочу вскрывать его и полностью блокировать. – Adam 17 September 2017 в 19:13
  • 8
    Сохранить сеанс SSH открыт, так что вы можете изменить его обратно. Вы хотите отключить пароли и корень. Да, вы можете кранты ему. Не ;) – Thufir 17 September 2017 в 21:04
  • 9
    В ходе СШ, у меня ошибка Permission denied (publickey). и PasswordAuthentication no. Что я должен делать? Я могу изменить PasswordAuthentication no на другой хост? – ParisaN 10 May 2018 в 10:22

внести некоторые дополнения:

в Mac по умолчанию нет ssh-copy-id, вам придется установить его самостоятельно: curl https://raw.github.com/beautifulcode/ssh-copy-id-for-OSX/master/ssh-copy-id.sh -o /usr/local/bin/ssh-copy-id chmod +x /usr/local/bin/ssh-copy-id

узнайте больше здесь: https://github.com/beautifulcode/ssh-copy-id-for-OSX

в Mac по умолчанию нет ssh-copy-id, вам придется установить его самостоятельно: curl https://raw.github.com/beautifulcode/ssh-copy-id-for-OSX/master/ssh-copy-id.sh -o /usr/local/bin/ssh-copy-id chmod +x /usr/local/bin/ssh-copy-id

заметим, что кавычки необходимы.

2
ответ дан 25 July 2018 в 21:47

Удаленный вход / копирование без ввода пароля

Приложения ssh и scp для удаленного входа и удаленной копии, соответственно, позволяют вам связываться с удаленным хостом без указания пароля. Это требует, чтобы вы выполняли процедуру аутентификации, подобную процедуре, описанной ниже. Под клиентом мы подразумеваем машину, на которой вы сидите, и по серверу мы имеем в виду машину, на которую вы хотите войти, не указав пароль. Шаги процедуры аутентификации:

Запустите ssh-keygen для создания закрытых и открытых ключей, если это уже не сделано на вашем компьютере. Они хранятся в файлах в $HOME/.ssh. Добавить содержимое файла открытого ключа в файл $HOME/.ssh/authorized_keys или $HOME/.ssh/authorized_keys2 на сервере.

Существует три разных типа протоколов аутентификации. Вы указываете тип при запуске ssh-keygen:

Запустите ssh-keygen для создания закрытых и открытых ключей, если это уже не сделано на вашем компьютере. Они хранятся в файлах в $HOME/.ssh. Протокол SSH версии 1, RSA: это получается при запуске ssh-keygen -t rsa и приводит к файлам id_rsa (закрытый ключ) и id_rsa.pub (открытый ключ) Добавить содержимое файла открытого ключа в файл $HOME/.ssh/authorized_keys или $HOME/.ssh/authorized_keys2 на сервере.

При запуске ssh-keygen вы можете полагаться на ответы по умолчанию (подразумевая, что вы делаете не давать кодовую фразу). Это делает всю настройку простой, но также небезопасной.

Вы можете указать тип ключей, которые будут использоваться опцией ssh; ssh -1 принудительно использует ключи RSA1 (протокол версии 1), тогда как ssh -2 заставляет ssh использовать только RSA или DSA-ключи (протокол версии 2). В приведенных ниже примерах мы создаем и устанавливаем ключи RSA1 и DSA на удаленном хосте, чтобы у вас было больше гибкости. Вы можете сделать конфигурационный файл в каталоге .ssh с помощью строки

Protocol 1,2

Это делает ssh попыткой подключения RSA1 (протокол версии 1) до RSA1 [ ! d20] (протокол версии 2).

Использование ключей RSA1

remote=user@remotehost # fill in correct user and remotehost names cd $HOME/.ssh # create .ssh on remote host if it is non-existing: ssh $remote 'if [ ! -d .ssh ]; then mkdir .ssh; fi' # copy RSA1 key: scp identity.pub ${remote}:.ssh ssh $remote "cd .ssh; cat identity.pub >> authorized_keys"

Использование ключей DSA

remote=user@remotehost # fill in correct user and remotehost names cd $HOME/.ssh # create .ssh on remote host if it is non-existing: ssh $remote 'if [ ! -d .ssh ]; then mkdir .ssh; fi' # copy DSA key: scp id_dsa.pub ${remote}:.ssh ssh $remote "cd .ssh; cat id_dsa.pub >> authorized_keys2"

Это все, что вам нужно сделать, если вы не использовали кодовую фразу при создании ключей. Вы можете проверить соединение, запустив ssh $ remote и посмотреть, можете ли вы войти в систему, не указывая пароль (возможно, вам нужно будет использовать -1 или -2 как опции для RSA1 ). Процедуру можно, конечно, повторить для любой машины, на которую вы хотите войти.

Если вы использовали кодовую фразу, вам нужно будет запустить программу ssh-agent, чтобы запустить специальную оболочку, за которой следует ssh-add, чтобы зарегистрировать комбинацию RSA1 с sshd.

Скрипт для автоматизации соединений без пароля: ssh-no-password.sh

#!/bin/sh # create ssh connections without giving a password if [ $# -lt 1 ]; then echo Usage: $0 username@remotehost exit fi remote="$1" # 1st command-line argument is the user@remotehost address this=$HOST # name of client host # first check if we need to run ssh-keygen for generating # $HOME/.ssh with public and private keys: if [ ! -d $HOME/.ssh ]; then echo "just type RETURN for each question:" # no passphrase - unsecure!! # generate RSA1, RSA and DSA keys: echo; echo; echo ssh-keygen echo; echo; echo ssh-keygen -t rsa echo; echo; echo ssh-keygen -t dsa else # we have $HOME/.ssh, but check that we have all types of # keys (RSA1, RSA, DSA): if [ ! -f $HOME/.ssh/identity ]; then # generate RSA1 keys: echo "just type RETURN for each question:" # no passphrase - unsecure!! ssh-keygen fi if [ ! -f $HOME/.ssh/id_rsa ]; then # generate RSA keys: echo "just type RETURN for each question:" # no passphrase - unsecure!! ssh-keygen -t rsa fi if [ ! -f $HOME/.ssh/id_rsa ]; then # generate DSA keys: echo "just type RETURN for each question:" # no passphrase - unsecure!! ssh-keygen -t dsa fi fi cd $HOME/.ssh if [ ! -f config ]; then # make ssh try ssh -1 (RSA1 keys) first and then ssh -2 (DSA keys) echo "Protocol 1,2" > config fi # copy public keys (all three types) to the destination host: echo; echo; echo # create .ssh on remote host if it's not there: ssh $remote 'if [ ! -d .ssh ]; then mkdir .ssh; fi' # copy RSA1 key: scp identity.pub ${remote}:.ssh/${this}_rsa1.pub # copy RSA key: #scp id_rsa.pub ${remote}:.ssh/${this}_rsa.pub # copy DSA key: scp id_dsa.pub ${remote}:.ssh/${this}_dsa.pub # make authorized_keys(2) files on remote host: echo; echo; echo # this one copies all three keys: #ssh $remote "cd .ssh; touch authorized_keys authorized_keys2; cat ${this}_rsa1.pub >> authorized_keys; cat ${this}_rsa.pub >> authorized_keys2; cat ${this}_dsa.pub >> authorized_keys2;" # this one copies RSA1 and DSA keys: ssh $remote "cd .ssh; touch authorized_keys authorized_keys2; cat ${this}_rsa1.pub >> authorized_keys; cat ${this}_dsa.pub >> authorized_keys2;" echo; echo; echo echo "try an ssh $remote"

скопирован из: http: //folk.uio .Но / HPL / скриптовый / док / SSH-нет-password.html

3
ответ дан 25 July 2018 в 21:47

Я обычно использую sshpass для этого, устанавливаю его с помощью sudo apt-get install sshpass и использую его следующим образом

sshpass -p 'password' ssh your_username@your_server
18
ответ дан 31 July 2018 в 10:24
  • 1
    Почему бы не использовать ключи SSH? – enzotib 6 December 2011 в 23:39
  • 2
    Это не «почему бы и нет». ситуация, она по-прежнему отлично работает без добавления ключей, это просто другой метод, который я бы сказал. – Bruno Pereira 7 December 2011 в 00:05
  • 3
    Спасибо за информацию о sshpass, никогда не слышал об этом раньше. – Panther 7 December 2011 в 00:39
  • 4
    Ключи SSH являются "правильный" ответ на вопрос, но sshpass - это очень полезный хак в тех случаях, когда вы не можете изменить метод проверки подлинности на удаленном сервере! – Jacob Krall 14 March 2014 в 21:27
  • 5
    Это очень опасно, вы будете хранить в bash_history или какие-либо простые пароли для хостов, с которыми вы подключаетесь. – kappa 22 July 2015 в 15:48

Введите следующие команды:

ssh-keygen Нажмите клавишу «Ввод», пока не получите приглашение ssh-copy-id -i root@ip_address (он будет запрашивать пароль хост-системы) ssh root@ip_address

Теперь вы можете войти в систему без пароля.

30
ответ дан 31 July 2018 в 10:24

как я обычно делаю это следующим образом:

ssh-keygen -t rsa

(при запросе пароля, оставьте это поле пустым)

тогда: cat ~/.ssh/id_rsa.pub | ssh username@hostname 'cat >> .ssh/authorized_keys'

(для этого требуется папке .SSH, чтобы быть в домашней директории на целевой хост, с файл authorized_keys в нем)

конечно, заменить имя пользователя с желаемым именем пользователя и именем хоста с нужного хоста или IP-адрес

после этого, просто SSH на эту коробку просто, как вы привыкли.

20
ответ дан 31 July 2018 в 10:24
  • 1
    Как насчет команды touch и chmod в ответе Ринзвинда? – Oxwivi 4 June 2011 в 23:29
  • 2
    Вам нужно выдать файл [F1], чтобы 0600 или это не будет работать – Marco Ceppi♦ 4 June 2011 в 23:36
  • 3
    Это действительно помогло, потому что я не могу получить SSH-копия-удостоверение личности, чтобы работать для root на моем сервере. он должен быть корневой, в ситуации, когда backuppc (или любой другой демон) должен по SSH на другую машину. – Adam 27 August 2016 в 23:11

Если вы создаете общедоступную / готовую ключевую пару и регистрируетесь с использованием нашего вновь созданного открытого ключа, вам не нужно будет вводить пароль. В зависимости от конфигурации вашего ключа и / или агента ssh вам может понадобиться защитить ваш ключ парольной фразой.

Вот один из многих коротких хаутов для вас. Для безопасности этого метода крайне важно, чтобы сгенерированный закрытый ключ оставался приватным! Вы никогда не должны делиться им с кем-либо или разрешать доступ к нему в любом качестве.

Эта команда генерирует достаточно сильный ключ в ~/.ssh/:

ssh-keygen -b 4096

В ~/.ssh/ вы найдет ваш открытый ключ как id_rsa.pub. Его содержимое должно быть добавлено к файлу вашего сервера authorized_keys путем переноса через переносимый носитель (ручный накопитель) или путем короткого включения аутентификации пароля на сервере, затем с помощью ssh-copy-id ~/.ssh/id_rsa.pub username@server, а затем снова отключите его.

Если вы решили защитить свой ключ парольной фразой (на первом шаге), вы можете использовать ssh-agent или брандмауэр Ubuntu для обеспечения безопасности этого локального локального доступа, поэтому вам не нужно вводить его все время.

4
ответ дан 31 July 2018 в 10:24

[решение специально для пользователей, использующих Windows для ssh на своих удаленных машинах, включая облачные изображения на облаке AWS Cloud и GCE Cloud]

(Если это сработает для вас, вы получите высокую оценку. терпение.)

(Отказ от ответственности)

Недавно использовалось это решение для удаленного входа в систему новых развернутых изображений vm на GCE.

Используемые инструменты :

puttygen [puttygen download] winscp [winscp download]

Шаги для выполнения:

puttygen [puttygen download ] Загрузите открытый ключ на ваш сервер в облаке или удаленном месте.

Описание (как это сделать):

1. Создайте ключ / пару или используйте существующий закрытый ключ

(у меня есть закрытый ключ)

Откройте puttygen, нажмите кнопку загрузки и выберите файл закрытого ключа (*.pem) .

(у меня нет личного ключа)

Откройте puttygen, выберите нужный тип ключа SSH2 DSA (вы можете использовать RSA или DSA) внутри раздел «Параметры» ... и важно, чтобы вы оставили поле кодовой фразы пустым, нажмите «Создать» и следуйте инструкциям для генерации пары ключей (общедоступных / частных).

(из источника 1, ссылка ниже)

2. Создайте новый файл «authorized_keys» (с записью)

Скопируйте данные открытого ключа из «Открытого ключа для вставки в файл OpenSSH authorized_keys» в разделе «Генератор ключей PuTTY» и вставьте ключевые данные в « authorized_keys ".

Убедитесь, что в этом файле есть только одна строка текста.

3. Загрузить ключ на сервер linux

Открыть puttygen, Выбрать протокол SFTP и войти в систему с вашими учетными данными ssh. Выберите нужный тип ключа SSH2 DSA (вы можете использовать RSA или DSA) в разделе «Параметры» ... и важно оставить поле кодовой фразы пустым,

Загрузите файл authorized_keys в домашний каталог на удаленном компьютере.

4. Установите правильные разрешения

Создайте каталог .ssh (если не существует)

Скопируйте файл authorized_keys в каталог .ssh. (это заменит любой существующий файл authorized_keys, обратите внимание на это).

Если файл существует, просто добавьте содержимое этого файла в существующий файл.

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

$ sudo chmod 700 .ssh && chmod 600 .ssh/authorized_keys

Теперь вы сможете ssh на удаленную машину без ввода учетных данных каждый раз.

Дальнейшее чтение:

Загружает открытый ключ на ваш сервер в облаке или удаленном месте. winscp [winscp download] puttygen загрузить winscp загрузить
9
ответ дан 31 July 2018 в 10:24

Я хотел бы добавить ответ для тех, кто может найти, что они должны ввести пароль, даже если они прочитали все ответы здесь, потому что вы установили IdentitiesOnly как «да». И ответ здесь может сэкономить вам много времени, чтобы управлять несколькими ключами, являясь ключами для git или сервера.

После того, как я сгенерировал ключ и скопировал его на сервер:

ssh-keygen ssh-copy-id -i ~/.ssh/12gpu_server.pub lerner@192.168.20.160

Я обнаружил, что это не сработало.

Затем я пошел проверить файл ~/.ssh/config, я увидел это внизу:

Host * IdentitiesOnly yes

Затем я добавляю это выше:

Host 12gpu HostName 192.168.20.160 User lerner IdentityFile ~/.ssh/12gpu_server

Я могу просто войти в систему, введя ssh 12gpu.

Затем вы можете добавить несколько ssh-ключей, используя ваши любимые имена, и вам нужно только добавить настройки, такие как четыре строки, в файл конфигурации.

Хост - это имя, которое вы хотите ввести при подключении сервера позже; hostName - это ip сервера; Пользователь - это имя пользователя, на котором вы заходите на сервер; и файл идентификации - это файл, в котором вы храните ключ, который вы создали.

1
ответ дан 31 July 2018 в 10:24
Отключить аутентификацию паролей Поскольку многие люди с SSH-серверами используют слабые пароли, многие онлайн-злоумышленники будут искать SSH-сервер, а затем начнут угадывать пароли наугад. Злоумышленник может пробовать тысячи паролей через час и угадывать даже самый сильный пароль, заданный достаточно времени. Рекомендуемым решением является использование ключей SSH вместо паролей. Чтобы как можно догадаться, как обычный SSH-ключ, пароль должен содержать 634 случайных буквы и цифры. Если вы всегда сможете войти на свой компьютер с помощью SSH-ключа, вы должны полностью отключить аутентификацию паролей. Если вы отключите аутентификацию паролем, можно будет только подключиться с компьютеров, которые вы специально одобрили. Это значительно улучшает вашу безопасность, но делает невозможным подключение к вашему компьютеру с ПК друга без предварительного одобрения ПК или с вашего собственного ноутбука при случайном удалении ключа. Рекомендуется отключить аутентификацию по паролю, если у вас нет конкретной причины. Чтобы отключить аутентификацию паролей, найдите следующую строку в файле sshd_config: #PasswordAuthentication yes замените ее на строку, которая выглядит так: PasswordAuthentication no После того, как вы сохранили файл и перезапустили свой SSH-сервер, вас даже не спрашивают для пароля при входе в систему.

https://help.ubuntu.com/community/SSH/OpenSSH/Configuring#disable-password-authentication

7
ответ дан 31 July 2018 в 10:24
  • 1
    Это самый правильный правильный ответ, но хороший для безопасности! Также отключить регистрацию root еще один хороший – FreeSoftwareServers 21 December 2015 в 23:15
  • 2
    [F1] влияет на всех пользователей? Если нет, как отключить его для обычных пользователей, но оставить его неизменным для root, пока я его тестирую? Я действительно не хочу вскрывать его и полностью блокировать. – Adam 17 September 2017 в 19:13
  • 3
    Сохранить сеанс SSH открыт, так что вы можете изменить его обратно. Вы хотите отключить пароли и корень. Да, вы можете кранты ему. Не ;) – Thufir 17 September 2017 в 21:04
  • 4
    Во время ssh у меня есть ошибка Permission denied (publickey). с PasswordAuthentication no. Что мне делать? Изменить PasswordAuthentication no на другой хост? – ParisaN 10 May 2018 в 10:22

внести некоторые дополнения:

в Mac по умолчанию нет ssh-copy-id, вам придется установить его самостоятельно: curl https://raw.github.com/beautifulcode/ssh-copy-id-for-OSX/master/ssh-copy-id.sh -o /usr/local/bin/ssh-copy-id chmod +x /usr/local/bin/ssh-copy-id

узнайте больше здесь: https://github.com/beautifulcode/ssh-copy-id-for-OSX

в Mac по умолчанию нет ssh-copy-id, вам придется установить его самостоятельно: curl https://raw.github.com/beautifulcode/ssh-copy-id-for-OSX/master/ssh-copy-id.sh -o /usr/local/bin/ssh-copy-id chmod +x /usr/local/bin/ssh-copy-id

заметим, что кавычки необходимы.

2
ответ дан 31 July 2018 в 10:24

Удаленный вход / копирование без ввода пароля

Приложения ssh и scp для удаленного входа и удаленной копии, соответственно, позволяют вам связываться с удаленным хостом без указания пароля. Это требует, чтобы вы выполняли процедуру аутентификации, подобную процедуре, описанной ниже. Под клиентом мы подразумеваем машину, на которой вы сидите, и по серверу мы имеем в виду машину, на которую вы хотите войти, не указав пароль. Шаги процедуры аутентификации:

Запустите ssh-keygen для создания закрытых и открытых ключей, если это уже не сделано на вашем компьютере. Они хранятся в файлах в $HOME/.ssh. Добавить содержимое файла открытого ключа в файл $HOME/.ssh/authorized_keys или $HOME/.ssh/authorized_keys2 на сервере.

Существует три разных типа протоколов аутентификации. Вы указываете тип при запуске ssh-keygen:

Запустите ssh-keygen для создания закрытых и открытых ключей, если это уже не сделано на вашем компьютере. Они хранятся в файлах в $HOME/.ssh. Протокол SSH версии 1, RSA: это получается при запуске ssh-keygen -t rsa и приводит к файлам id_rsa (закрытый ключ) и id_rsa.pub (открытый ключ) Добавить содержимое файла открытого ключа в файл $HOME/.ssh/authorized_keys или $HOME/.ssh/authorized_keys2 на сервере.

При запуске ssh-keygen вы можете полагаться на ответы по умолчанию (подразумевая, что вы делаете не давать кодовую фразу). Это делает всю настройку простой, но также небезопасной.

Вы можете указать тип ключей, которые будут использоваться опцией ssh; ssh -1 принудительно использует ключи RSA1 (протокол версии 1), тогда как ssh -2 заставляет ssh использовать только RSA или DSA-ключи (протокол версии 2). В приведенных ниже примерах мы создаем и устанавливаем ключи RSA1 и DSA на удаленном хосте, чтобы у вас было больше гибкости. Вы можете сделать конфигурационный файл в каталоге .ssh с помощью строки

Protocol 1,2

Это делает ssh попыткой подключения RSA1 (протокол версии 1) до RSA1 [ ! d20] (протокол версии 2).

Использование ключей RSA1

remote=user@remotehost # fill in correct user and remotehost names cd $HOME/.ssh # create .ssh on remote host if it is non-existing: ssh $remote 'if [ ! -d .ssh ]; then mkdir .ssh; fi' # copy RSA1 key: scp identity.pub ${remote}:.ssh ssh $remote "cd .ssh; cat identity.pub >> authorized_keys"

Использование ключей DSA

remote=user@remotehost # fill in correct user and remotehost names cd $HOME/.ssh # create .ssh on remote host if it is non-existing: ssh $remote 'if [ ! -d .ssh ]; then mkdir .ssh; fi' # copy DSA key: scp id_dsa.pub ${remote}:.ssh ssh $remote "cd .ssh; cat id_dsa.pub >> authorized_keys2"

Это все, что вам нужно сделать, если вы не использовали кодовую фразу при создании ключей. Вы можете проверить соединение, запустив ssh $ remote и посмотреть, можете ли вы войти в систему, не указывая пароль (возможно, вам нужно будет использовать -1 или -2 как опции для RSA1 ). Процедуру можно, конечно, повторить для любой машины, на которую вы хотите войти.

Если вы использовали кодовую фразу, вам нужно будет запустить программу ssh-agent, чтобы запустить специальную оболочку, за которой следует ssh-add, чтобы зарегистрировать комбинацию RSA1 с sshd.

Скрипт для автоматизации соединений без пароля: ssh-no-password.sh

#!/bin/sh # create ssh connections without giving a password if [ $# -lt 1 ]; then echo Usage: $0 username@remotehost exit fi remote="$1" # 1st command-line argument is the user@remotehost address this=$HOST # name of client host # first check if we need to run ssh-keygen for generating # $HOME/.ssh with public and private keys: if [ ! -d $HOME/.ssh ]; then echo "just type RETURN for each question:" # no passphrase - unsecure!! # generate RSA1, RSA and DSA keys: echo; echo; echo ssh-keygen echo; echo; echo ssh-keygen -t rsa echo; echo; echo ssh-keygen -t dsa else # we have $HOME/.ssh, but check that we have all types of # keys (RSA1, RSA, DSA): if [ ! -f $HOME/.ssh/identity ]; then # generate RSA1 keys: echo "just type RETURN for each question:" # no passphrase - unsecure!! ssh-keygen fi if [ ! -f $HOME/.ssh/id_rsa ]; then # generate RSA keys: echo "just type RETURN for each question:" # no passphrase - unsecure!! ssh-keygen -t rsa fi if [ ! -f $HOME/.ssh/id_rsa ]; then # generate DSA keys: echo "just type RETURN for each question:" # no passphrase - unsecure!! ssh-keygen -t dsa fi fi cd $HOME/.ssh if [ ! -f config ]; then # make ssh try ssh -1 (RSA1 keys) first and then ssh -2 (DSA keys) echo "Protocol 1,2" > config fi # copy public keys (all three types) to the destination host: echo; echo; echo # create .ssh on remote host if it's not there: ssh $remote 'if [ ! -d .ssh ]; then mkdir .ssh; fi' # copy RSA1 key: scp identity.pub ${remote}:.ssh/${this}_rsa1.pub # copy RSA key: #scp id_rsa.pub ${remote}:.ssh/${this}_rsa.pub # copy DSA key: scp id_dsa.pub ${remote}:.ssh/${this}_dsa.pub # make authorized_keys(2) files on remote host: echo; echo; echo # this one copies all three keys: #ssh $remote "cd .ssh; touch authorized_keys authorized_keys2; cat ${this}_rsa1.pub >> authorized_keys; cat ${this}_rsa.pub >> authorized_keys2; cat ${this}_dsa.pub >> authorized_keys2;" # this one copies RSA1 and DSA keys: ssh $remote "cd .ssh; touch authorized_keys authorized_keys2; cat ${this}_rsa1.pub >> authorized_keys; cat ${this}_dsa.pub >> authorized_keys2;" echo; echo; echo echo "try an ssh $remote"

скопирован из: http: //folk.uio .Но / HPL / скриптовый / док / SSH-нет-password.html

3
ответ дан 31 July 2018 в 10:24

Я обычно использую sshpass для этого, устанавливаю его с помощью sudo apt-get install sshpass и использую его следующим образом

sshpass -p 'password' ssh your_username@your_server
18
ответ дан 31 July 2018 в 11:27
  • 1
    Почему бы не использовать ключи SSH? – enzotib 6 December 2011 в 23:39
  • 2
    Не "почему нет" ситуации, он до сих пор работает идеально, без добавления ключей, его просто еще один способ я бы сказал. – Bruno Pereira 7 December 2011 в 00:05
  • 3
    Спасибо за информацию о sshpass, никогда не слышал об этом раньше. – Panther 7 December 2011 в 00:39
  • 4
    Клавиши SSH являются «правильными». ответьте на вопрос, но sshpass - очень полезный взлом в случаях, когда вы не можете изменить метод проверки подлинности на удаленном сервере! – Jacob Krall 14 March 2014 в 21:27
  • 5
    Это очень опасно, вы будете держать в bash_history или любой простые пароли для хозяев, к которым вы подключаетесь.. – kappa 22 July 2015 в 15:48

Если вы создаете общедоступную / готовую ключевую пару и регистрируетесь с использованием нашего вновь созданного открытого ключа, вам не нужно будет вводить пароль. В зависимости от конфигурации вашего ключа и / или агента ssh вам может понадобиться защитить ваш ключ парольной фразой.

Вот один из многих коротких хаутов для вас. Для безопасности этого метода крайне важно, чтобы сгенерированный закрытый ключ оставался приватным! Вы никогда не должны делиться им с кем-либо или разрешать доступ к нему в любом качестве.

Эта команда генерирует достаточно сильный ключ в ~/.ssh/:

ssh-keygen -b 4096

В ~/.ssh/ вы найдет ваш открытый ключ как id_rsa.pub. Его содержимое должно быть добавлено к файлу вашего сервера authorized_keys путем переноса через переносимый носитель (ручный накопитель) или путем короткого включения аутентификации пароля на сервере, затем с помощью ssh-copy-id ~/.ssh/id_rsa.pub username@server, а затем снова отключите его.

Если вы решили защитить свой ключ парольной фразой (на первом шаге), вы можете использовать ssh-agent или брандмауэр Ubuntu для обеспечения безопасности этого локального локального доступа, поэтому вам не нужно вводить его все время.

4
ответ дан 31 July 2018 в 11:27

[решение специально для пользователей, использующих Windows для ssh на своих удаленных машинах, включая облачные изображения на облаке AWS Cloud и GCE Cloud]

(Если это сработает для вас, вы получите высокую оценку. терпение.)

(Отказ от ответственности)

Недавно использовалось это решение для удаленного входа в систему новых развернутых изображений vm на GCE.

Используемые инструменты :

puttygen [puttygen download] winscp [winscp download]

Шаги для выполнения:

puttygen [puttygen download ] Загрузите открытый ключ на ваш сервер в облаке или удаленном месте.

Описание (как это сделать):

1. Создайте ключ / пару или используйте существующий закрытый ключ

(у меня есть закрытый ключ)

Откройте puttygen, нажмите кнопку загрузки и выберите файл закрытого ключа (*.pem) .

(у меня нет личного ключа)

Откройте puttygen, выберите нужный тип ключа SSH2 DSA (вы можете использовать RSA или DSA) внутри раздел «Параметры» ... и важно, чтобы вы оставили поле кодовой фразы пустым, нажмите «Создать» и следуйте инструкциям для генерации пары ключей (общедоступных / частных).

(из источника 1, ссылка ниже)

2. Создайте новый файл «authorized_keys» (с записью)

Скопируйте данные открытого ключа из «Открытого ключа для вставки в файл OpenSSH authorized_keys» в разделе «Генератор ключей PuTTY» и вставьте ключевые данные в « authorized_keys ".

Убедитесь, что в этом файле есть только одна строка текста.

3. Загрузить ключ на сервер linux

Открыть puttygen, Выбрать протокол SFTP и войти в систему с вашими учетными данными ssh. Выберите нужный тип ключа SSH2 DSA (вы можете использовать RSA или DSA) в разделе «Параметры» ... и важно оставить поле кодовой фразы пустым,

Загрузите файл authorized_keys в домашний каталог на удаленном компьютере.

4. Установите правильные разрешения

Создайте каталог .ssh (если не существует)

Скопируйте файл authorized_keys в каталог .ssh. (это заменит любой существующий файл authorized_keys, обратите внимание на это).

Если файл существует, просто добавьте содержимое этого файла в существующий файл.

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

$ sudo chmod 700 .ssh && chmod 600 .ssh/authorized_keys

Теперь вы сможете ssh на удаленную машину без ввода учетных данных каждый раз.

Дальнейшее чтение:

Загружает открытый ключ на ваш сервер в облаке или удаленном месте. winscp [winscp download] puttygen загрузить winscp загрузить
9
ответ дан 31 July 2018 в 11:27

Другие вопросы по тегам:

Похожие вопросы: