ubuntu ssh auto login [dубликат]

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

Как мне настроить его? Требуется ли другая команда для выполнения сеанса без пароля?
227
задан 4 June 2011 в 23:43

82 ответа

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

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

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

30
ответ дан 31 July 2018 в 21:03

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

(Если это работает для вас, вы можете высоко оценить его. терпение.)

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

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


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

  1. puttygen [puttygen download]
  2. winscp [winscp download]

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

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

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

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

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

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


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

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

Sample Key Generation pic [!d19] (из источника 1, ссылка ниже)

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

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


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


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

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

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


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

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


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

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


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

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

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

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

  1. https://opengear.zendesk.com/entries/23216142-Generating-and-uploading-SSH-keys-under-Windows
  2. http://www.beginninglinux.com/home/server-administration/openssh-keys-certificates-authentication-pem-pub-crt
  3. puttygen загрузить
  4. winscp загрузить
9
ответ дан 31 July 2018 в 21:03

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

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

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

  ssh-keygen -b 4096  

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

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

4
ответ дан 31 July 2018 в 21:03

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

  sshpass -  p 'password' ssh your_username @ your_server  
18
ответ дан 31 July 2018 в 21:03

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

  • 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
ответ дан 2 August 2018 в 14:07

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

Приложения 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
ответ дан 2 August 2018 в 14:07

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

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

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

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

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

  Host * IdentitiesOnly yes [  ! d2] 

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

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

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

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

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

1
ответ дан 2 August 2018 в 14:07

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

ssh-keygen -t rsa

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

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

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

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

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

20
ответ дан 2 August 2018 в 14:07

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

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

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

30
ответ дан 2 August 2018 в 14:07

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

(Если это работает для вас, вы можете высоко оценить его. терпение.)

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

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


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

  1. puttygen [puttygen download]
  2. winscp [winscp download]

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

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

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

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

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

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


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

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

Sample Key Generation pic [!d19] (из источника 1, ссылка ниже)

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

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


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


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

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

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


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

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


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

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


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

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

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

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

  1. https://opengear.zendesk.com/entries/23216142-Generating-and-uploading-SSH-keys-under-Windows
  2. http://www.beginninglinux.com/home/server-administration/openssh-keys-certificates-authentication-pem-pub-crt
  3. puttygen загрузить
  4. winscp загрузить
9
ответ дан 2 August 2018 в 14:07

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

  sshpass -  p 'password' ssh your_username @ your_server  
18
ответ дан 2 August 2018 в 14:07

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

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

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

  ssh-keygen -b 4096  

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

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

4
ответ дан 2 August 2018 в 14:07

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

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

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

Приложения 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
ответ дан 3 August 2018 в 18:20

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

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

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

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

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

  Host * IdentitiesOnly yes [  ! d2] 

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

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

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

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

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

1
ответ дан 3 August 2018 в 18:20

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

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

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

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

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

ssh-keygen -t rsa

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

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

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

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

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

20
ответ дан 3 August 2018 в 18:20

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

  sshpass -  p 'password' ssh your_username @ your_server  
18
ответ дан 3 August 2018 в 18:20

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

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

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

  ssh-keygen -b 4096  

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

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

4
ответ дан 3 August 2018 в 18:20

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

(Если это работает для вас, вы можете высоко оценить его. терпение.)

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

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


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

  1. puttygen [puttygen download]
  2. winscp [winscp download]

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

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

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

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

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

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


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

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

Sample Key Generation pic [!d19] (из источника 1, ссылка ниже)

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

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


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


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

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

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


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

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


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

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


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

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

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

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

  1. https://opengear.zendesk.com/entries/23216142-Generating-and-uploading-SSH-keys-under-Windows
  2. http://www.beginninglinux.com/home/server-administration/openssh-keys-certificates-authentication-pem-pub-crt
  3. puttygen загрузить
  4. winscp загрузить
9
ответ дан 3 August 2018 в 18:20

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

  • 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
ответ дан 5 August 2018 в 03:23

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

Приложения 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
ответ дан 5 August 2018 в 03:23

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

ssh-keygen -t rsa

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

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

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

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

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

20
ответ дан 5 August 2018 в 03:23

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

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

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

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

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

  Host * IdentitiesOnly yes [  ! d2] 

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

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

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

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

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

1
ответ дан 5 August 2018 в 03:23

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

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

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

30
ответ дан 5 August 2018 в 03:23

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

(Если это работает для вас, вы можете высоко оценить его. терпение.)

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

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


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

  1. puttygen [puttygen download]
  2. winscp [winscp download]

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

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

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

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

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

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


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

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

Sample Key Generation pic [!d19] (из источника 1, ссылка ниже)

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

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


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


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

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

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


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

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


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

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


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

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

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

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

  1. https://opengear.zendesk.com/entries/23216142-Generating-and-uploading-SSH-keys-under-Windows
  2. http://www.beginninglinux.com/home/server-administration/openssh-keys-certificates-authentication-pem-pub-crt
  3. puttygen загрузить
  4. winscp загрузить
9
ответ дан 5 August 2018 в 03:23

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

  sshpass -  p 'password' ssh your_username @ your_server  
18
ответ дан 5 August 2018 в 03:23

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

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

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

  ssh-keygen -b 4096  

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

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

4
ответ дан 5 August 2018 в 03:23

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

Приложения 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
ответ дан 6 August 2018 в 20:18

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

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

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

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