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

227

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

  • Как мне настроить его?
  • Требуется ли другая команда для выполнения сеанса без пароля?
задан Oxwivi 04.06.2011 в 19:24
источник

10 ответов

233

Ответ

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

ssh-keygen

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

ssh-copy-id [email protected]
## or if your server uses custom port no:
ssh-copy-id "[email protected] -p 1234"

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

ssh [email protected]

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

Пример

[email protected]:~$ 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 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|.o= . oo.        |
|*B.+ . .         |
|*=o .   o .      |
| = .     =       |
|. o     S        |
|E.               |
| o               |
|  .              |
|                 |
+-----------------+

[email protected]:~$ ssh-copy-id [email protected]
[email protected]'s password: 
Now try logging into the machine, with "ssh '[email protected]'", 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 [email protected] , заменив пользователя удаленным пользователем и сервером с именем или IP-адресом компьютера. Он будет запрашивать пароль SSH, вводить его, и если все будет успешно завершено, вы сможете получить доступ к машине через ssh [email protected] , не требуя пароля.

Ссылки

ответ дан Rinzwind 04.06.2011 в 19:36
источник
32

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

  1. ssh-keygen

    Нажмите Enter до получения приглашения

  2. ssh-copy-id -i [email protected]_address

    (Он будет запрашивать пароль хост-системы)

  3. ssh [email protected]_address

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

    
ответ дан Ravindra 17.05.2013 в 10:45
21

Обычно я делаю так:

ssh-keygen -t rsa

(Когда будет предложено ввести пароль, оставьте поле пустым)

Тогда: cat ~/.ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'

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

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

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

    
ответ дан kyentei 04.06.2011 в 20:22
18

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

sshpass -p 'password' ssh [email protected]_server
    
ответ дан Bruno Pereira 06.12.2011 в 18:26
9

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

Отказ

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

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

  1. puttygen загрузка puttygen
  2. winscp winscp download

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

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

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

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

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

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

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

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

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

2.Создайтеновыйфайлauthorized_keys(сnotepad)

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

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

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

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

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

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

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

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

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

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

sudochmod700.ssh&&chmod600.ssh/authorized_keys

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

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

ответ дан devprashant 20.11.2015 в 10:07
7

Disable Password Authentication

Because a lot of people with SSH servers use weak passwords, many online attackers will look for an SSH server, then start guessing passwords at random. An attacker can try thousands of passwords in an hour, and guess even the strongest password given enough time. The recommended solution is to use SSH keys instead of passwords. To be as hard to guess as a normal SSH key, a password would have to contain 634 random letters and numbers. If you'll always be able to log in to your computer with an SSH key, you should disable password authentication altogether.

If you disable password authentication, it will only be possible to connect from computers you have specifically approved. This massively improves your security, but makes it impossible for you to connect to your own computer from a friend's PC without pre-approving the PC, or from your own laptop when you accidentally delete your key.

It's recommended to disable password authentication unless you have a specific reason not to.

To disable password authentication, look for the following line in your sshd_config file:

%pr_e%

replace it with a line that looks like this:

%pr_e%

Once you have saved the file and restarted your SSH server, you shouldn't even be asked for a password when you log in.

Ссылка

    
ответ дан Thufir 15.02.2015 в 02:10
4

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

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

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

ssh-keygen -b 4096

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

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

    
ответ дан con-f-use 04.06.2011 в 19:32
3

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

Приложения 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

[email protected]   # 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

[email protected]   # 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 [email protected]
  exit
fi
remote="$1"  # 1st command-line argument is the [email protected] 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"

скопировано из: Ссылка

    
ответ дан sddgob 14.09.2014 в 10:27
2

Чтобы сделать некоторые дополнения:

  • 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
    

найти здесь: Ссылка

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

    ssh-copy-id "[email protected] -p 2222"
    

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

    
ответ дан samluthebrave 14.09.2013 в 14:14
1

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

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

ssh-keygen  # change the file to /home/yourname/.ssh/something
ssh-copy-id -i ~/.ssh/something.pub [email protected]

Я нашел, что это не сработало.

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

Host *
IdentitiesOnly yes

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

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

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

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

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

ответ дан lerner 24.01.2018 в 10:08