Как я могу настроить пароль меньше вход в систему SSH?

Я хочу смочь войти в удаленное через ssh, не имея необходимость вводить пароль все время.

  • Как я настраиваю его?
  • Другая команда требуется выполнить сессию пароля меньше?
292
задан 4 June 2011 в 11:43

10 ответов

Ответ

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

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, которая позволит вам идентифицировать вас как самого себя без использования пароля. При желании вы можете защитить ключи паролем, но это можно оставить пустым, разрешив полностью без пароля доступ к SSH.

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

Ссылки

297
ответ дан 22 November 2019 в 22:39

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

ssh-keygen -t rsa

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

Затем: cat ~/.ssh/id_rsa.pub | ssh имя пользователя@имя_хоста 'cat >> .ssh/authorized_keys'

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

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

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

26
ответ дан 22 November 2019 в 22:39

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

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

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

ssh-keygen -b 4096

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

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

5
ответ дан 22 November 2019 в 22:39

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

sshpass -p 'password' ssh your_username@your_server
18
ответ дан 22 November 2019 в 22:39

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

  1. ssh-keygen

    Нажимайте Enter до тех пор, пока не получите запрос

  2. ssh-copy-id -i root @ ip_address

    (один раз спросит для пароля хост-системы)

  3. ssh root @ ip_address

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

36
ответ дан 22 November 2019 в 22:39

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

  • 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
    хмод +x /usr/local/bin/ssh-copy-id
    

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

  • если вы сделали переадресацию портов, то команда должна быть такой:

    ssh-copy-id "not-marco@127.0.0.1 -p 2222".
    

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

3
ответ дан 22 November 2019 в 22:39

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

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

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

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

  1. SSH протокол версии 1, RSA1: это выбор по умолчанию и приводит к идентичности файлов (закрытый ключ, должен принимать chmod 0700 , чтобы гарантировать, что этот файл не доступен для чтения другими) и identity.pub (открытый ключ).
  2. SSH протокол версии 1, RSA : это получается путем запуска ssh-keygen -t rsa и приводит к файлам id_rsa (закрытый ключ) и id_rsa.pub (открытый ключ)
  3. SSH протокол версии 1, DSA : это получается путем выполнения ssh-keygen -t dsa и приводит к файлам id_dsa (закрытый ключ) и id_dsa .pub (открытый ключ)

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

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

Protocol 1,2

. Это заставит ssh попытаться установить соединение RSA1 (версия протокола 1) до ] RSA / DSA (версия протокола 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 в качестве параметров для ) ssh ). Конечно, эту процедуру можно повторить для любой машины, на которую вы хотите войти.

Если вы использовали парольную фразу, вам нужно будет запустить программу ssh-agent , чтобы запустить специальную оболочку, за которым следует ssh-add , чтобы зарегистрировать комбинацию ключа / ключевой фразы с 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. no / hpl / scripting / doc / ssh-no-password.html

3
ответ дан 22 November 2019 в 22:39

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

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

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

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

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

 #PasswordAuthentication да
 

замените его строкой следующего вида:

 PasswordAuthentication no
 

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

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

11
ответ дан 22 November 2019 в 22:39

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

Заявление об ограничении ответственности

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


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

  1. puttygen puttygen download
  2. winscp winscp download

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

  1. Сгенерируйте пару открытого / закрытого ключей с помощью puttygen.
  2. Загрузите открытый ключ на свой сервер в облаке или удаленном месте.

Как это сделать:

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

Если у вас есть закрытый ключ:

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


Если у вас нет личного ключа:

  • Откройте puttygen ,
  • Выберите нужный тип ключа SSH2 DSA (вы можете использовать RSA или DSA) в Раздел параметров . Важно оставить поле парольной фразы пустым.
  • Нажмите сгенерировать и следуйте инструкциям, чтобы сгенерировать пару (открытый / закрытый) ключей.

Sample Key Generation pic

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

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

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


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


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

  • Откройте WinSCP,
  • Выберите протокол файла SFTP и войдите в систему, используя свои учетные данные ssh.
  • В случае успеха вы увидите структуру домашнего каталога на удаленном компьютере.

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


4. Установите соответствующие разрешения

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


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

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


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

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

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

Дополнительная литература:

9
ответ дан 22 November 2019 в 22:39

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

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

ssh-keygen  # change the file to /home/yourname/.ssh/something
ssh-copy-id -i ~/.ssh/something.pub lerner@192.168.20.160

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

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

Host *
IdentitiesOnly yes

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

Host somename
HostName 192.168.20.160
User lerner
IdentityFile ~/.ssh/something

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

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

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

1
ответ дан 22 November 2019 в 22:39

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

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