Сценарий оболочки для того, чтобы войти в ssh сервер

Почти все, что можно сделать в ударе, имеет zsh эквивалент, но необходимо обработать перевод в зависимости от конкретного случая.

Строчный редактор в zsh является zle. Команда для привязки ключей bindkey. Команды выпуска строки, которые могут быть связаны с ключами, называют виджетами.

# You may want to call different history search commands, e.g.
# down-line-or-history or down-line-or-search (and up-*)
bindkey '^P' history-search-backward
bindkey '^N' history-search-forward
bindkey '\e[A' history-search-backward
bindkey '\e[B' history-search-forward
# The others should work already

29
08.02.2012, 02:10
11 ответов

Я однажды записал expect сценарий для входа ssh сервера (как случай) и мой сценарий был чем-то вроде этого:

#!/usr/bin/expect

spawn ssh MyUserName@192.168.20.20
expect "password"
send "MyPassword\r"
interact

Я думаю, возможно, interact отсутствует в Вашем сценарии.

36
27.01.2020, 19:38

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

Выполните эти шаги:

  1. mkdir -p ~/.ssh
  2. cd ~/.ssh
  3. ssh-keygen -type dsa -i mysshkeys
  4. Нажмите Return при запросе пароль
  5. Нажмите Return во второй раз для подтверждения.

Теперь будет два файла в Вашем ~/.ssh каталог, mysshkey.pub и mysshkey. mysshkey.pub Ваш открытый ключ, этот безопасен поставить удаленные серверы. mysshkey Ваш частный ключ без пароля, не безопасно поставить удаленные серверы (или где-нибудь кто-то еще мог получить копию).

На сервере Вы желаете к SSH в:

  1. Войдите в удаленный сервер
  2. mkdir -p ~/.ssh
  3. Скопируйте и вставьте содержание mysshkey.pub в ~/.ssh/authorized_keys
  4. Удостоверьтесь это ~/.ssh/authorized_keys chmod'd к 600

Теперь, выражаясь в действие с Вашей локальной машиной Вы выполняете следующую команду:

ssh -i ~/.ssh/mysshkey <remote_server_ip>

И Вы будете зарегистрированы, не будучи предложенным пароль.

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

32
27.01.2020, 19:38
  • 1
    я использовал бы ключи RSA, а не DSA. Но кроме этого, полного соглашаются. –  glglgl 07.02.2012, 11:03
  • 2
    иногда Вы не можете добавить ключи к удаленному хосту, например, сетевые устройства. –  DarkHeart 13.04.2016, 08:07
  • 3
    я попробовал это. ssh все еще просит пароль. Необходимо ли конкретно дать IP-адрес? Я попробовал его и <user>@<domain-name> и просто доменным именем. –  Jay Bienvenu 20.06.2017, 17:39
  • 4
    Эта команда сказала слишком много аргументов? (для шага 3) –  Joseph Astrahan 08.08.2017, 05:59
  • 5
    я должен был измениться на ssh-keygen-t dsa и вручную ввести расположение файла вместо этого. –  Joseph Astrahan 08.08.2017, 06:10

На находящихся в Debian дистрибутивах, sshpass пакет обеспечивает более легкий способ сделать то, что Вы хотите. Пакет доступен для многих других популярных дистрибутивов. Необходимо настроить его сначала:

echo 'YourPassword' > passwordFile.txt
chmod 600 passwordFile.txt

Затем вызовите команду SSH из сценария как это:

sshpass -f /path/to/passwordFile.txt /usr/bin/ssh -p 8484 root@172.31.72.103

Это обеспечивает больше гибкости, такой, как будто Вы используете другую локаль или потребность изменить пароль, чем использование решений expect.

20
27.01.2020, 19:38

вы можете использовать это:

sshpass -p 'yourpassword'  ssh user@ip
5
27.01.2020, 19:38

Сначала установите sshPass sudo apt-get install sshpass

Затем создайте псевдоним в файле .bashrc как

alias sshLogin='sshpass -p <your ssh password> ssh username@remote_host'

Теперь перезагрузите измененный файл .bashrc с помощью источника ~ / .bashrc

Теперь все готово.

Теперь вы можете запустить ssh, используя созданный выше псевдоним sshLogin в терминале.

7
27.01.2020, 19:38

Recientemente hice esto, esto puede ayudarte:

sshpass -p 'password' username@ipaddress

si esto no funciona, deberá generar claves en la otra máquina con la que desea conectarse

ssh-keygen

generará claves privadas y públicas y le pedirá una ubicación, déjelo en blanco y guardará las claves en la carpeta.ssh de forma predeterminada le pedirá una frase de contraseña, también puede dejarla vacía vaya a la carpeta.ssh y cambie el nombre de la clave pública a 'claves autorizadas _'

cd.ssh/
mv id_rsa.pub authorized_keys
useradd -d /home/username username

esto agregará un usuario a la lista ahora vaya al directorio de inicio y otorgue permiso y reinicie los servicios sshd

chmod 700 /home/username/.ssh
chmod 644 /home/username/.ssh/authorized_keys
chown root:root /home/dozee
sudo service sshd restart

ahora tendrá que mover la clave privada al sistema en esa ubicación desde donde ejecutará el comando ssh, luego podrá conectarse con

sshpass -p 'password' ssh -i id_rsa username@ip

si incluso eso no funciona, vaya a /etc/ssh abra sshd _config con el editor vim verifique si pubkeyAuthenticatoin está activado o no, si no, cámbielo a sí, reinicie los servicios sshd y luego inténtelo, definitivamente funcionará.

1
27.01.2020, 19:38

Como ya se describió en otras respuestas, también uso sshpasspero lo combino con el comando readpara almacenar mi contraseña en una variable de entorno temporal. De esta manera, mi contraseña nunca se escribe en ningún lugar en claro. Aquí está el comando de una línea que uso:

read -s PASS; sshpass -p $PASS ssh <user>@<host adress>

Después de eso, debe ingresar su contraseña (, no aparece nada en la pantalla )y luego al presionar enter se abrirá la conexión.

2
27.01.2020, 19:38

Todo lo que necesita para crear una clave hash y guardarla en su PC

Simplemente escriba

ssh-keygen -t rsa -b 4096 # just press Enter till the end

luego ingrese

ssh-copy-id <user>@<server>

luego inicie sesión normalmente usando

ssh <user>@<server>

Ahora no necesitas contraseña

Note: Saving your password in a plain text is dangerous

This method is creating a hashed value of your password using RSA with public key of length 4096 which is very secure.

3
27.01.2020, 19:38

Вход без пароля через SSH с помощью SSH Keygen за 5 простых шагов:

Настройка среды :enter image description here

Шаг 1:Аутентификация SSH -Ключи Kegen включены – (192.168.0.12)
Сначала войдите на сервер 192.168.0.12 под пользователем и сгенерируйте пару открытых ключей с помощью следующей команды.

enter image description here

Шаг 2:Создайте каталог.ssh на — 192.168.0.11
Используйте SSH с сервера 192.168.0.12 для подключения к серверу 192.168.0.11, чтобы создать под ним каталог.ssh, используя следующую команду.

enter image description here

Шаг 3:Загрузить сгенерированные открытые ключи в – 192.168.0.11
Используйте SSH с сервера 192.168.0.12 и загрузите новый сгенерированный открытый ключ (id _rsa.pub )на сервер 192.168.0.11 в каталог пользователя .sshв качестве имени файла с авторизованными ключами _.

enter image description here

Шаг 4:Установите разрешения на — 192.168.0.11
Из-за разных версий SSH на серверах нам необходимо установить права доступа к каталогу .sshи файлу authorized_keys.

enter image description here

Шаг 5:Вход с сервера 192.168.0.12 на сервер 192.168.0.11 без пароля
С этого момента мы можем войти в 192.168.0.11 как пользователь sheena с сервера 192.168.0.12 как пользователь tecmint без пароля.

enter image description here

1
27.01.2020, 19:38

Первый аргумент — это имя хоста, а второй — пароль.

     #!/usr/bin/expect
     set pass [lindex $argv 1]
     set host [lindex $argv 0]
     spawn ssh -t root@$host echo Hello
     expect "*assword: "
     send "$pass\n";
     interact

Исполнение :./script.expect

1
27.01.2020, 19:38

Просто используйте соответствующую опцию

ssh -o PreferredAuthentications=password user@remote.server.tld

Вы также можете пойти наоборот и просто запретить использование ключей.

ssh -o PubkeyAuthentication=no user@remote.server.tld
0
05.05.2020, 23:21

Теги

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