Я хочу иметь возможность входа в систему через ssh без необходимости вводить пароль все время.
- Как мне настроить его?
- Требуется ли другая команда для выполнения сеанса без пароля?
Я хочу иметь возможность входа в систему через ssh без необходимости вводить пароль все время.
Выполните следующие команды:
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 без пароля.
ssh-keygen
, и создаст файл id_rsa
и id_rsa.pub
. Файл pub
- это то, что происходит на серверах, закрытый ключ ( id_rsa
) - это то, что остается с вами, и как вы себя идентифицируете. ssh-copy-id [email protected]
, заменив пользователя удаленным пользователем и сервером с именем или IP-адресом компьютера. Он будет запрашивать пароль SSH, вводить его, и если все будет успешно завершено, вы сможете получить доступ к машине через ssh [email protected]
, не требуя пароля. Введите следующие команды:
ssh-keygen
Нажмите Enter до получения приглашения
ssh-copy-id -i [email protected]_address
(Он будет запрашивать пароль хост-системы)
ssh [email protected]_address
Теперь вы можете войти в систему без пароля.
Обычно я делаю так:
ssh-keygen -t rsa
(Когда будет предложено ввести пароль, оставьте поле пустым)
Тогда:
cat ~/.ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
(Для этого требуется, чтобы папка .ssh находилась в домашнем каталоге на целевом имени хоста с файлом authorized_keys)
Конечно, замените имя пользователя на нужное имя пользователя и имя хоста на требуемое имя хоста или IP-адрес
После этого просто установите SSH в это поле так же, как вы привыкли.
Обычно я использую sshpass
для этого, устанавливаю его с sudo apt-get install sshpass
и использую его как
sshpass -p 'password' ssh [email protected]_server
Это решение специально для пользователей, использующих Windows - ssh на своих удаленных машинах, включая облачные изображения на AWS Cloud и Облако GCE
Недавно использовалось это решение для удаленного входа в систему новых развернутых изображений vm на GCE.
puttygen
загрузка puttygen
winscp
winscp download
Если у вас есть закрытый ключ:
Откройте puttygen
, нажмите кнопку загрузки и выберите файл закрытого ключа ( *.pem
).
Если у вас нет личного ключа:
puttygen
, (изисточника1,ссылканиже)
notepad
)Скопируйтеданныеоткрытогоключаизраздела«ОткрытыйключдлявставкивфайлOpenSSHauthorized_keys»вGeneratorGeneratorPuTTYивставьтеданныеключавфайлauthorized_keys
.Р>
Убедитесь,чтовэтомфайлеестьтолькооднастрокатекста.Р>
Загрузитефайлauthorized_keysвдомашнийкаталогнаудаленномкомпьютере.
Сделатькаталог.ssh
(еслинесуществует)
Скопируйтефайлauthorized_keys
вкаталог.ssh
.
(этозаменитлюбойсуществующийфайлauthorized_keys
,обратитевниманиенаэто).
Еслифайлсуществует,простодобавьтесодержимоеэтогофайлавсуществующийфайл.
Выполнитькомандыдляустановкиразрешений:
sudochmod700.ssh&&chmod600.ssh/authorized_keys
Теперьвысможетеssh
наудаленнуюмашинубезвводаучетныхданныхкаждыйраз.Р>
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.
Если вы создаете общедоступную / готовую ключевую пару и регистрируетесь с использованием нашего вновь созданного открытого ключа, вам не нужно вводить пароль. В зависимости от конфигурации вашего ключа и / или агента 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 для обеспечения безопасности этого локального локального доступа, поэтому вам не нужно вводить его все время.
Приложения ssh
и scp
для удаленного входа и удаленной копии, соответственно, позволяют вам общаться с удаленным хостом без указания пароля. Это требует, чтобы вы выполняли процедуру аутентификации, подобную процедуре, описанной ниже. Под клиентом мы подразумеваем машину, на которой вы сидите, и по серверу мы имеем в виду машину, на которую вы хотите войти, не указав пароль. Шаги процедуры аутентификации:
$HOME/.ssh
. $HOME/.ssh/authorized_keys
или $HOME/.ssh/authorized_keys2
на сервере. Существует три разных типа протоколов аутентификации. Вы указываете тип при запуске ssh-keygen:
chmod 0700
, чтобы гарантировать, что этот файл не читается для других ) и identity.pub (открытый ключ). ssh-keygen -t rsa
и приводит к файлам id_rsa
(закрытый ключ) и id_rsa.pub
(открытый ключ) 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).
[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"
[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"
скопировано из: Ссылка
Чтобы сделать некоторые дополнения:
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"
обратите внимание, что необходимы кавычки.
Я хотел бы добавить ответ для тех, кто может найти, что они должны ввести пароль, даже если они прочитали все ответы здесь, потому что вы установили 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 сервера; Пользователь - это имя пользователя, на котором вы заходите на сервер; и файл идентификации - это файл, в котором вы храните ключ, который вы создали. Р>