Как автоматизировать логин SSH с паролем?
Как автоматизировать логин SSH с паролем? Я настраиваю свою тестовую виртуальную машину, поэтому серьезная безопасность не рассматривается. SSH выбрана для приемлемой безопасности с минимальной конфигурацией.
ех)
echo password | ssh [email protected]
Это не работает.
Я помню, что я сделал это с некоторыми трюками, которыми меня руководил кто-то, но я не могу сейчас вспомнить трюк, который я использовал ...
7 ответов
Не используйте пароль. Создайте бесшумный SSH-ключ и нажмите его на свою виртуальную машину.
Если у вас уже есть ключ SSH, вы можете пропустить этот шаг ... Просто нажмите Enter для ключа и оба фраз:
$ ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.
Скопируйте свои ключи на целевой сервер:
$ ssh-copy-id [email protected]
[email protected]'s password:
Теперь попробуйте войти в систему с помощью ssh '[email protected]'
и зарегистрируйтесь:
.ssh/authorized_keys
, чтобы убедиться, что мы не добавили дополнительные ключи, которые вы ожидали.
Наконец, зайдите в logging inâ € |
$ ssh [email protected]
[email protected]:~$
Вам также может понадобиться изучить ssh-agent
, если вы хотите, чтобы ваши ключи защищены парольной фразой.
$ sudo apt-get install sshpass
$ sshpass -p your_password ssh [email protected]
Простой ответ в трех простых шагах
Создать rsa keypair :
# ssh-keygen
затем скопируйте его на сервере с помощью одной простой команды :
# ssh-copy-id hostname
теперь вы можете войти в систему без пароля :
# ssh hostname
Использовать ожидание:
#!/usr/bin/expect -f
# ./ssh.exp password 192.168.1.11 id
set pass [lrange $argv 0 0]
set server [lrange $argv 1 1]
set name [lrange $argv 2 2]
spawn ssh [email protected]$server
match_max 100000
expect "*?assword:*"
send -- "$pass\r"
send -- "\r"
interact
Пример:
# ./1.ex password localhost ooshro
spawn ssh [email protected]
[email protected]'s password:
Linux ubuntu-1010-server-01 2.6.35-25-generic-pae #44-Ubuntu SMP Fri Jan 21 19:01:46 UTC 2011 i686 GNU/Linux
Ubuntu 10.10
Welcome to Ubuntu!
* Documentation: https://help.ubuntu.com/
Last login: Tue Mar 1 12:41:12 2011 from localhost
Это может быть бесполезно для вас, но вы можете сделать это с помощью Perl:
\#!/usr/bin/perl
use warnings;
use strict;
use Net::SSH::Perl;
my $host = 'remote.serv.er';
my $user = 'root';
my $pass = 'hunter2';
my $ssh = Net::SSH::Perl->new('$host');
$ssh->login('$user', '$pass') or die "Oh noes! $!";
Конечно, вы не хотите использовать SSH-ключи, а не пароли? Таким образом, это безопасно и автоматически.
Я удивлен, что никто не упомянул plink
из пакета putty-tools
в Ubuntu:
plink [email protected] -pw mypass [cmd]
Он также доступен в Windows, и синтаксис в основном совместим с клиентом openssh.