Почти все, что можно сделать в ударе, имеет 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
Я однажды записал expect
сценарий для входа ssh сервера (как случай) и мой сценарий был чем-то вроде этого:
#!/usr/bin/expect
spawn ssh MyUserName@192.168.20.20
expect "password"
send "MyPassword\r"
interact
Я думаю, возможно, interact
отсутствует в Вашем сценарии.
Вы идете об этом неправильным путем. То, что Вы хотите сделать, генерируют ssh-пару-ключей без пароля и затем (как долго, поскольку сервер поддерживает ключевую аутентификацию RSA), можно войти, не имея необходимость вводить пароль для всех. Это - угроза безопасности, если Ваш закрытый ключ хранится где-нибудь, что он мог быть украден.
Выполните эти шаги:
mkdir -p ~/.ssh
cd ~/.ssh
ssh-keygen -type dsa -i mysshkeys
Теперь будет два файла в Вашем ~/.ssh
каталог, mysshkey.pub
и mysshkey
. mysshkey.pub
Ваш открытый ключ, этот безопасен поставить удаленные серверы. mysshkey
Ваш частный ключ без пароля, не безопасно поставить удаленные серверы (или где-нибудь кто-то еще мог получить копию).
На сервере Вы желаете к SSH в:
mkdir -p ~/.ssh
mysshkey.pub
в ~/.ssh/authorized_keys
~/.ssh/authorized_keys
chmod
'd к 600
Теперь, выражаясь в действие с Вашей локальной машиной Вы выполняете следующую команду:
ssh -i ~/.ssh/mysshkey <remote_server_ip>
И Вы будете зарегистрированы, не будучи предложенным пароль.
Это - много предпочтительного метода управления автоматизированными логинами, поскольку Вы не заканчиваете жесткое кодирование Ваш пароль несколько мест, которые должны быть обновлены, если Вы когда-нибудь изменяете его.
На находящихся в 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
.
Сначала установите sshPass sudo apt-get install sshpass
Затем создайте псевдоним в файле .bashrc как
alias sshLogin='sshpass -p <your ssh password> ssh username@remote_host'
Теперь перезагрузите измененный файл .bashrc с помощью источника ~ / .bashrc
Теперь все готово.
Теперь вы можете запустить ssh, используя созданный выше псевдоним sshLogin
в терминале.
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á.
Como ya se describió en otras respuestas, también uso sshpass
pero lo combino con el comando read
para 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.
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.
Вход без пароля через SSH с помощью SSH Keygen за 5 простых шагов:
Шаг 1:Аутентификация SSH -Ключи Kegen включены – (192.168.0.12)
Сначала войдите на сервер 192.168.0.12 под пользователем и сгенерируйте пару открытых ключей с помощью следующей команды.
Шаг 2:Создайте каталог.ssh на — 192.168.0.11
Используйте SSH с сервера 192.168.0.12 для подключения к серверу 192.168.0.11, чтобы создать под ним каталог.ssh, используя следующую команду.
Шаг 3:Загрузить сгенерированные открытые ключи в – 192.168.0.11
Используйте SSH с сервера 192.168.0.12 и загрузите новый сгенерированный открытый ключ (id _rsa.pub )на сервер 192.168.0.11 в каталог пользователя .ssh
в качестве имени файла с авторизованными ключами _.
Шаг 4:Установите разрешения на — 192.168.0.11
Из-за разных версий SSH на серверах нам необходимо установить права доступа к каталогу .ssh
и файлу authorized_keys
.
Шаг 5:Вход с сервера 192.168.0.12 на сервер 192.168.0.11 без пароля
С этого момента мы можем войти в 192.168.0.11 как пользователь sheena с сервера 192.168.0.12 как пользователь tecmint без пароля.
Первый аргумент — это имя хоста, а второй — пароль.
#!/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
Просто используйте соответствующую опцию
ssh -o PreferredAuthentications=password user@remote.server.tld
Вы также можете пойти наоборот и просто запретить использование ключей.
ssh -o PubkeyAuthentication=no user@remote.server.tld