Я попытался написать сценарий оболочки, который может делать автоматический вход на сервер SSH с использованием пароля, который упоминается в сценарии. Я написал следующий код:
set timeout 30
/usr/bin/ssh -p 8484 root@172.31.72.103
expect
{
"root@172.31.72.103's password"
{
send "password\r"
}
}
Этот код не работает должным образом, все же он запрашивает пароль. Может кто-нибудь, пожалуйста, помогите мне в решении этого
Ответы:
Однажды я написал
expect
скрипт для входа на ssh-сервер (как в вашем случае), и мой скрипт был примерно таким:Я думаю, что, возможно,
interact
отсутствует в вашем сценарии.источник
cd
иls
и прочитать содержимое файла , а также. Можно ли это сделать после взаимодействия? Пожалуйста, ответьтеls
команду после входа в систему. Например, после отправки пароля выполните командуexpect
с текстом командной строки (чтобы убедиться, что вы вошли в систему), затемsend "ls\r"
. Все это идет раньшеinteract
.file_list
после выхода для доступа из локальной командной строкиВы идете об этом неправильно. Что вы хотите сделать, это создать пару паролей ssh-key без пароля, а затем (если сервер поддерживает аутентификацию по ключу 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
Теперь, чтобы запустить его в действие на вашем локальном компьютере, выполните следующую команду:
И вы войдете в систему без запроса пароля.
Это очень предпочтительный метод управления автоматическим входом в систему, так как вы не в конечном итоге жестко закодируете свой пароль в нескольких местах, которые необходимо обновить, если вы когда-либо измените его.
источник
В дистрибутивах на основе Debian
sshpass
пакет предоставляет более простой способ делать то, что вы хотите. Пакет доступен для многих других популярных дистрибутивов. Вы должны настроить это сначала:Затем вызовите команду SSH из сценария следующим образом:
Это обеспечивает большую гибкость, например, если вы используете другой языковой стандарт или вам необходимо изменить пароль, чем те решения, которые используются
expect
.источник
Сначала установите sshPass
sudo apt-get install sshpass
Затем создайте псевдоним в файле .bashrc как
Теперь перезагрузите измененный файл .bashrc
source ~/.bashrc
Теперь вы сделали.
Теперь вы можете запустить ssh, используя созданный выше псевдоним
sshLogin
в терминале.источник
Вы можете использовать это:
источник
Все, что вам нужно, чтобы создать хешированный ключ и сохранить его на ПК
Просто введите
затем введите
затем войдите как обычно
Теперь вам не нужен пароль
источник
ssh-copy-id
команду, о которой никто не упоминал. Я за это голосую.Вход без пароля по SSH с помощью SSH Keygen за 5 простых шагов :
Настройка среды:
Шаг 1: Аутентификация SSH-Kegen Keys on - (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
каталоге пользователя в качестве имени файла author_keys .Шаг 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 без пароля.
источник
chmod 700 id_rsa
в каталоге .ssh на локальном (клиент, т.е. в вашем примере 192.168.0.12) сервер: проблема решенаКак уже описано в других ответах, я также использую,
sshpass
но объединяю его сread
командой для сохранения моего пароля во временной переменной среды. Таким образом, мой пароль никогда не пишется в открытом виде. Вот команда из одной строки, которую я использую:После этого вы должны ввести свой пароль (на экране ничего не появляется), а затем нажать Enter, чтобы открыть соединение.
источник
Я недавно сделал это, это может помочь вам:
если это не сработает, вам придется генерировать ключи на другом компьютере, к которому вы хотите подключиться
он сгенерирует закрытые и открытые ключи и попросит вас указать местоположение, оставив пустым, он сохранит ключи в папке .ssh, по умолчанию он попросит вас ввести пароль, вы также можете оставить его пустым, перейти в папку .ssh и изменить имя открытого ключа для «author_keys»
это добавит пользователя в список, теперь перейдет в домашний каталог и даст разрешение и перезапустит службы sshd.
теперь вам нужно переместить закрытый ключ в систему в том месте, откуда вы собираетесь запустить команду ssh, после чего вы можете соединиться с
если даже это не сработает, перейдите в / etc / ssh, откройте sshd_config с помощью редактора vim и проверьте, установлен ли параметр pubkeyAuthenticatoin на «да» или «нет», если нет, измените его на «да», перезапустите службы sshd и попробуйте, это определенно будет работать. ,
источник
Первый аргумент - имя хоста, а второй - пароль.
Выполнение: ./script.expect
источник