SSH для ubuntu touch [dубликат]

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

как мне ее настроить? Это разные команды, необходимой для выполнения пароля сессии?
227
задан 4 June 2011 в 23:43

82 ответа

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

ssh-keygen -t rsa

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

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

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

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

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

20
ответ дан 1 August 2018 в 14:13
  • 1
    Как насчет команды touch и chmod в ответе Ринзвинда? – Oxwivi 4 June 2011 в 23:29
  • 2
    Вам понадобится chmod файл .ssh/authorized_keys до 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
ответ дан 1 August 2018 в 14:13

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

в 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
ответ дан 1 August 2018 в 14:13

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

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

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

существует три различных типа протоколов проверки подлинности. Укажите Тип при запуска SSH-ключей:

Запустите SSH-keygen для создания закрытых и открытых ключей, если это уже сделано на вашей машине. Они хранятся в файлах в $HOME/.ssh. протокол SSH версии 1, ОГА: это достигается путем выполнения на [F11] и результаты в файлы id_rsa (секретный ключ) и [от f13] (открытый ключ) Добавить содержимое файла открытого ключа в файл нажать [F8] и [F9] и на сервере. [dиода d17]при запуске SSH-ключей вы можете рассчитывать на по умолчанию ответы (подразумевая, что Вы не даете пароль). Это делает весь набор простой, но и небезопасным.[!dиода d17]

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

Protocol 1,2

это делает СШ попробуйте RSA1 (протокол версия 1) подключения перед RSA1 (версия протокола 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"

это все, что вам нужно сделать, если Вы не использовать пароль при генерации ключей. Вы можете проверить соединение, запустив СШ $пульт и посмотреть, если вы можете войти в систему без указания пароля (возможно, вам придется использовать [20 фунтов] или [клавиши f21] как варианты RSA1). Процедура может, конечно, быть повторен любую машину которую вы хотите войти.

[dрайвер d41]если Вы не используете ключевую фразу, вам придется запустить программу ssh-agent чтобы запустить специальную оболочку, затем ssh-add зарегистрировать RSA1 сочетании с sshd. Смотрите документацию по этим программам для получения дополнительных сведений.[!dрайвер d41]

скрипт для автоматизации пароль соединений: [f25 привод датчика]

#!/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
ответ дан 1 August 2018 в 14:13

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

sshpass -p 'password' ssh your_username@your_server
18
ответ дан 3 August 2018 в 06:06
  • 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
ответ дан 3 August 2018 в 06:06

[решение специально для пользователей, использующих 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
ответ дан 3 August 2018 в 06:06

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

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

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

30
ответ дан 3 August 2018 в 06:06

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

ssh-keygen -t rsa

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

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

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

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

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

20
ответ дан 3 August 2018 в 06:06
  • 1
    Насчет touch и команда chmod в ответ Rinzwind это? – Oxwivi 4 June 2011 в 23:29
  • 2
    Вам нужно выдать файл [F1], чтобы 0600 или это не будет работать – Marco Ceppi♦ 4 June 2011 в 23:36
  • 3
    Это действительно помогло, потому что я не мог заставить ssh-copy-id работать для 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
ответ дан 3 August 2018 в 06:06

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

в 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
ответ дан 3 August 2018 в 06:06

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

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

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

существует три различных типа протоколов проверки подлинности. Укажите Тип при запуска SSH-ключей:

Запустите SSH-keygen для создания закрытых и открытых ключей, если это уже сделано на вашей машине. Они хранятся в файлах в $HOME/.ssh. протокол SSH версии 1, ОГА: это достигается путем выполнения на [F11] и результаты в файлы id_rsa (секретный ключ) и [от f13] (открытый ключ) Добавить содержимое файла открытого ключа в файл нажать [F8] и [F9] и на сервере. [dиода d17]при запуске SSH-ключей вы можете рассчитывать на по умолчанию ответы (подразумевая, что Вы не даете пароль). Это делает весь набор простой, но и небезопасным.[!dиода d17]

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

Protocol 1,2

это делает СШ попробуйте RSA1 (протокол версия 1) подключения перед RSA1 (версия протокола 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"

это все, что вам нужно сделать, если Вы не использовать пароль при генерации ключей. Вы можете проверить соединение, запустив СШ $пульт и посмотреть, если вы можете войти в систему без указания пароля (возможно, вам придется использовать [20 фунтов] или [клавиши f21] как варианты RSA1). Процедура может, конечно, быть повторен любую машину которую вы хотите войти.

[dрайвер d41]если Вы не используете ключевую фразу, вам придется запустить программу ssh-agent чтобы запустить специальную оболочку, затем ssh-add зарегистрировать RSA1 сочетании с sshd. Смотрите документацию по этим программам для получения дополнительных сведений.[!dрайвер d41]

скрипт для автоматизации пароль соединений: [f25 привод датчика]

#!/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
ответ дан 3 August 2018 в 06:06

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

sshpass -p 'password' ssh your_username@your_server
18
ответ дан 4 August 2018 в 08:16
  • 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
ответ дан 4 August 2018 в 08:16

[решение специально для пользователей, которые используют Windows по SSH на удаленных машинах, включая облачные образы на облаке aws и облачных ГККП]

(если это работает для вас, здесь высоко ценится. Спасибо за ваше терпение.)

(отказ)

недавно использовали это решение для удаленного входа новых развернутых образов виртуальных машин на ГБО.

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

генератор puttygen [генератор puttygen скачать] помощью winscp [помощью winscp скачать]

действия:

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

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

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) в разделе параметры ... и важно, что вы оставите поле пустым, пароль, [!файл д42] [d43 см.]загрузить authorized_keys в домашний каталог на удаленном компьютере.[!d43 см.]

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

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

копирование файла [F5], чтобы .каталог СШ. (это заменит все существовавшие authorized_keys файл, примите это к сведению).

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

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

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

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

[о d54]Дополнительная литература:[!о d54] [dиода d17]загрузить открытый ключ на сервер в облаке или удаленном месте. [!dиода d17] помощью winscp [скачать помощью winscp] генератор puttygen скачать помощью winscp скачать
9
ответ дан 4 August 2018 в 08:16

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

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

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

30
ответ дан 4 August 2018 в 08:16

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

ssh-keygen -t rsa

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

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

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

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

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

20
ответ дан 4 August 2018 в 08:16
  • 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

я нашел это не работает.

тогда я пошел, чтобы проверить клавиши [F4] файл, я увидел это на дне:

Host * IdentitiesOnly yes

тогда я добавить это выше:

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

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

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

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

1
ответ дан 4 August 2018 в 08:16

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

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
ответ дан 4 August 2018 в 08:16

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

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

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

существует три различных типа протоколов проверки подлинности. Укажите Тип при запуска SSH-ключей:

Запустите SSH-keygen для создания закрытых и открытых ключей, если это уже сделано на вашей машине. Они хранятся в файлах в $HOME/.ssh. протокол SSH версии 1, ОГА: это достигается путем выполнения на [F11] и результаты в файлы id_rsa (секретный ключ) и [от f13] (открытый ключ) Добавить содержимое файла открытого ключа в файл нажать [F8] и [F9] и на сервере. [dиода d17]при запуске SSH-ключей вы можете рассчитывать на по умолчанию ответы (подразумевая, что Вы не даете пароль). Это делает весь набор простой, но и небезопасным.[!dиода d17]

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

Protocol 1,2

это делает СШ попробуйте RSA1 (протокол версия 1) подключения перед RSA1 (версия протокола 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"

это все, что вам нужно сделать, если Вы не использовать пароль при генерации ключей. Вы можете проверить соединение, запустив СШ $пульт и посмотреть, если вы можете войти в систему без указания пароля (возможно, вам придется использовать [20 фунтов] или [клавиши f21] как варианты RSA1). Процедура может, конечно, быть повторен любую машину которую вы хотите войти.

[dрайвер d41]если Вы не используете ключевую фразу, вам придется запустить программу ssh-agent чтобы запустить специальную оболочку, затем ssh-add зарегистрировать RSA1 сочетании с sshd. Смотрите документацию по этим программам для получения дополнительных сведений.[!dрайвер d41]

скрипт для автоматизации пароль соединений: [f25 привод датчика]

#!/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
ответ дан 4 August 2018 в 08:16

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

sshpass -p 'password' ssh your_username@your_server
18
ответ дан 5 August 2018 в 15:39
  • 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
ответ дан 5 August 2018 в 15:39

[решение специально для пользователей, которые используют Windows по SSH на удаленных машинах, включая облачные образы на облаке aws и облачных ГККП]

(если это работает для вас, здесь высоко ценится. Спасибо за ваше терпение.)

(отказ)

недавно использовали это решение для удаленного входа новых развернутых образов виртуальных машин на ГБО.

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

генератор puttygen [генератор puttygen скачать] помощью winscp [помощью winscp скачать]

действия:

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

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

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) в разделе параметры ... и важно, что вы оставите поле пустым, пароль, [!файл д42] [d43 см.]загрузить authorized_keys в домашний каталог на удаленном компьютере.[!d43 см.]

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

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

копирование файла [F5], чтобы .каталог СШ. (это заменит все существовавшие authorized_keys файл, примите это к сведению).

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

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

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

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

[о d54]Дополнительная литература:[!о d54] [dиода d17]загрузить открытый ключ на сервер в облаке или удаленном месте. [!dиода d17] помощью winscp [скачать помощью winscp] генератор puttygen скачать помощью winscp скачать
9
ответ дан 5 August 2018 в 15:39

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

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

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

30
ответ дан 5 August 2018 в 15:39

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

ssh-keygen -t rsa

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

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

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

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

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

20
ответ дан 5 August 2018 в 15:39
  • 1
    Как насчет команды touch и chmod в ответе Ринзвинда? – Oxwivi 4 June 2011 в 23:29
  • 2
    Вам понадобится chmod файл .ssh/authorized_keys до 0600, иначе это не сработает – Marco Ceppi♦ 4 June 2011 в 23:36
  • 3
    Это действительно помогло, потому что я не мог заставить ssh-copy-id работать для 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
ответ дан 5 August 2018 в 15: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 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
ответ дан 5 August 2018 в 15:39

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

Приложения 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
ответ дан 5 August 2018 в 15: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 chmod + 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 - p2222 "

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

2
ответ дан 7 August 2018 в 08:52

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

Приложения 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, чтобы зарегистрировать комбинацию key / passphrase с 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
ответ дан 7 August 2018 в 08:52

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

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