Как автоматизировать логин SSH с паролем?

Как автоматизировать логин SSH с паролем? Я настраиваю свою тестовую виртуальную машину, поэтому серьезная безопасность не рассматривается. SSH выбрана для приемлемой безопасности с минимальной конфигурацией.

ех)

echo password | ssh [email protected]

Это не работает.

Я помню, что я сделал это с некоторыми трюками, которыми меня руководил кто-то, но я не могу сейчас вспомнить трюк, который я использовал ...

314 голосов | спросил Eonil 1 MarpmTue, 01 Mar 2011 14:07:12 +03002011-03-01T14:07:12+03:0002 2011, 14:07:12

7 ответов


281

Не используйте пароль. Создайте бесшумный 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, если вы хотите, чтобы ваши ключи защищены парольной фразой.

ответил Cakemox 1 MarpmTue, 01 Mar 2011 14:17:09 +03002011-03-01T14:17:09+03:0002 2011, 14:17:09
469
$ sudo apt-get install sshpass
$ sshpass -p your_password ssh [email protected]
ответил weekens 31 Maypm13 2013, 13:08:28
50

Простой ответ в трех простых шагах

Создать rsa keypair :

# ssh-keygen

затем скопируйте его на сервере с помощью одной простой команды :

# ssh-copy-id hostname

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

# ssh hostname
ответил lzap 14 12011vEurope/Moscow11bEurope/MoscowMon, 14 Nov 2011 16:57:13 +0400 2011, 16:57:13
23

Использовать ожидание:

#!/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
ответил ooshro 1 MarpmTue, 01 Mar 2011 14:08:41 +03002011-03-01T14:08:41+03:0002 2011, 14:08:41
11

Это может быть бесполезно для вас, но вы можете сделать это с помощью 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! $!";
ответил James L 1 MarpmTue, 01 Mar 2011 14:52:29 +03002011-03-01T14:52:29+03:0002 2011, 14:52:29
9

Конечно, вы не хотите использовать SSH-ключи, а не пароли? Таким образом, это безопасно и автоматически.

ответил Coops 1 MarpmTue, 01 Mar 2011 14:14:42 +03002011-03-01T14:14:42+03:0002 2011, 14:14:42
0

Я удивлен, что никто не упомянул plink из пакета putty-tools в Ubuntu:

plink [email protected] -pw mypass  [cmd]

Он также доступен в Windows, и синтаксис в основном совместим с клиентом openssh.

ответил eadmaster 9 J000000Monday18 2018, 16:15:34

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132